• 作用域


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

    位置动态:*名称

    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

  • 相关阅读:
    标记不同浏览器的Burp Suite 插件
    60%配列机械键盘客制化清单
    配合mitmproxy使用自动化工具测试阿里云API网关接口
    CORS & CSP笔记
    fmex挂单挖矿
    使用SPLUNK进行简单Threat Hunting
    Mac最新系统bssdb BUG
    技巧之如何快速使用websocket来监控标准输出
    币早知道夺宝题--以太坊题解题方法
    发行NEO的NEP-5合约代币
  • 原文地址:https://www.cnblogs.com/kangxi/p/9175163.html
Copyright © 2020-2023  润新知