"""
LEGB查询规则:
L locals 局部变量,当前所在命名空间(如函数,模块等) 注意,包括函数的参数(形参)
E Enclosing Function 闭包空间(外部嵌套函数的命名空间)
G Globals 全局变量,某个python模块的命名空间
B Builtins python内建模块的命名空间
"""
key='Hello'#模块全局
def test():
print(key)#全局,输出:Hello
def test2(key):
print(key,end='***')#局部(形参),输出 key参数传入的值
key=key+str(512)
print(key)
def test3():
#print(key)
""" 这里↑遵循LEGB规则解析标识符key的时候,
在函数locals中发现了key=1024
key不再当作全局变量解析,所以打开注释后这里会报错:
local variable 'key' referenced before assignment
"""
key=1024#注意和前面的test函数比较
print(key)
def test4():
global key
#若要在模块内的某个函数里面修改模块全局变量,一定要有global关键字
key=1024
if __name__ == '__main__':
test()
test2('hi')
test3()
test4()
test()
运行结果:
Hello
hi***hi512
1024
1024
Process finished with exit code 0
这个问题使用pycharm编程时候,编辑器是可以用高亮给你提示出来的......So,有个好的IDE真实省心省力啊O(∩_∩)O