zoukankan      html  css  js  c++  java
  • 作用域

    动态参数:可以传递任意个参数

    位置动态:*名称

    ex:def talking(*word)

    关键字动态传参: **名称

    ex:def talking(**word)

    无敌传参def talking(*arg,**word)

    传参的顺序为:位置参数,动态参数,默认参数,关键字参数

           位置参数 > *args > 默认值参数 > **kwargs

    命名空间

      在Python解释器开始执行之后,就会在内存中开辟一个空间,每当遇到一个变量的时候,就把变量名和值之间的关系记录下来,但是当遇到函数定义的时候,解释器知识把函数名读入内存,表示这个函数存在了,至于函数内部的变量和逻辑,解释器是不关心的,也就是说一开始的时候只是函数加载进来,仅此而已,只有当函数被调用和访问的时候,解释器才会根据函数内部声名的变量来进行开辟变量的内部空间,随着函数执行完毕,这些函数内部变量占用的空间也会随着函数执行完毕而被清空。

    1. 全局命名空间--> 我们直接在py⽂件中, 函数外声明的变量都属于全局命名空间
    2. 局部命名空间--> 在函数中声明的变量会放在局部命名空间
    3. 内置命名空间---> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内

    置命名空间

    加载顺序:
    1. 内置命名空间
    2. 全局命名空间
    3. 局部命名空间(函数被执⾏的时候)

    取值顺序:
    1. 局部命名空间
    2. 全局命名空间
    3. 内置命名空间

    作用域: 作用域就是作用范围, 按照生效范围来看分为 全局作用域和局部作用域
    全局作用域: 包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循
    从上

    作用域命名空间:
    1. 全局作用域: 全局命名空间 + 内置命名空间
    2. 局部作用域: 局部命名空间

    关键字global和nonlocal
    首先我们写这样一个代码, 首先在全局声明一个变量, 然后再局部调一这个变量, 并改变这
    个变量的值

    nonlocal 表示在局部作用域中, 调用父级命名空间中的变量. 

    a = 10
    def func1():
      a = 20
        def func2():

          nonlocal a
          a = 30
          print(a)
        func2()
        print(a)

    func1()

    结果:
    加了nonlocal
    30
    30
    不加nonlocal
    30
    20

  • 相关阅读:
    【日语】标日初级上册单词(5-8)1
    【日语】标日初级上册单词(1-4)1
    【日语】计算机日语
    百家姓日语
    【日语】动物名称日语单词集合
    【日语】日语常用会话1000句
    【日语】编程相关日语词汇
    【日语】日语N5学习
    【日语】日语新闻核心词汇
    使用uni-app开发微信小程序之登录模块
  • 原文地址:https://www.cnblogs.com/kangxi/p/9175163.html
Copyright © 2011-2022 走看看