python-global和nonlocal区别

 

# L = Local     局部作用域
# E = Enclosing 嵌套作用域
# N = nonlocal  只作用于嵌套作用域,而且只是作用在函数里面
# G = global    全局作用域
# B = Built-in  内置作用域
"""
locals()函数返回一个当前位置的所有局部变量的字典
globals()函数返回一个全局变量的字典,包括所有导入的变量
local设置局部变量,local需在函数体内设置;在函数体内声明的变量,默认都是局部变量
global设置为全局变量,global需在函数体内设置; global同时还可以定义新的全局变量
nonlocal 声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。nonlocal需在内层函数中使用 ,nonlocal不是定义新的外层函数变量(内层函数改变外层函数变量值)
"""
def test(c):
    global a
    a=10
    b=20
    print(a,b)
    print('局部变量',locals())
    def inner(*args, **kwargs):
        nonlocal c
        print(c+30)
    return inner()
test(1)
print('全局变量',globals())

 

 

"""
自动化参数传递
1.参数提取
2.参数存储
3.参数引用
"""

#内存存储变量(参数传递)
a='12232'
s = globals()
print(s['a'])

#变量池
saves = {'a':'1233'}
print(s['a'])

 

posted @ 2020-04-24 17:14  南方的墙  阅读(753)  评论(0编辑  收藏  举报