zoukankan      html  css  js  c++  java
  • 关于 global nonlocal 用法

    # 1 关于 globals()  locals()  nolocl 还有内置函数的引用
    #
    # 概念的解释
    # 命名空间
    # 1 局部命名空间:每一个函数都有自己的命名空间
    # 2 全局命名空间:写在函数外的变量名
    # 3 内置命名空间:pythong 解释器启动之后就可以使用的名字
    #
    # 作用域: 一个名字使用的的区域
    # 全局作用域: 内置命名空间和全局命名空间的名字统称全局作用域
    # 局部作用域:局部空间的名字属于局部作用域
    #
    # 局部作用域可以使用全局作用域的变量 ,而全局作用域不能使用局部作用域的变量
    # 局部作用域还可以嵌套更小的局部作用域
    #
    # 作用链 小作用域可以使用大作用域的变量,但是作用链是单向的,不能反向应用
    # globals() 保存了全局作用域的名字和值,尽量避免
    # ,locals() 中的内容会根据执行位置来决定作用域中的内容 如果在全局执行 和globals() 一样
    # nonlocal x 修改最近拥有该变量的外层函数 不影响全局
    ---------
    # 1题
    # def func():
    # print(1)
    # def func():
    # print(2)
    # func()
    # 答案 是 2 原因第一个函数被覆盖
    --------
    # # 2题 ???? 改变全局第一个是为改变之前的 其它 会改变全局
    # n = 1
    # def func():
    # global n
    # n = n +1
    # print(n)
    # print(n)
    # func()
    # print(n)
    ---------
    # 4题 nonlocal 引用最近上一层的变量 全局不变 y 改变继承父级爷爷级
    # n = 1
    # def func1():
    # n = 2
    # def func2():
    # nonlocal n
    # n+=1
    # print(n)
    # func2()
    # func1()
    # print(n)
    # 答案 是 3 , 1 原因第一个函数被覆盖
    ---------
    # 5题 global 改变全局 n是全局的变量 全局为n =2
    # n = 1
    # def func1():
    # n = 2
    # def func2():
    # global n
    # n+=1
    # print(n)
    # func2()
    # func1()
    # print(n)
    # 答案 2 2
    ---------
    # 6题 带上传参数不能改变全局,能改变局部因为局部有参数变量
    # a = 1
    # def func(a):
    # a+=1
    # print(a)
    # func(a)
    # print(a)
    # 答案 2 ,1
    ---------
    # 题目
    # n = []
    # def func():
    # n.append(1)
    # print(n)
    # print(n)
    # func()
    # print(n)
    # 答案 是 [] ,[1] ,[1] 列表可修改 可变类型 和上传参数不一样
  • 相关阅读:
    Python for i 循环
    Python 输入分数并评
    用户名和密码的输入
    cocos2d-x 3.0学习
    VS2008 ShotKey
    Cocos2d-x 3.0的安装方法
    VFC
    一、在WIN7 64位系统平台,VS2013环境下安装WTL90_4090_RC1(2014-04-01)
    http://www.vcf-online.org/
    Win7 64位 VS2012 安装 Qt5
  • 原文地址:https://www.cnblogs.com/xiaoluoboer/p/7815932.html
Copyright © 2011-2022 走看看