您的位置:首页 > 编程语言 > Python开发

python:LEGB标识符解析顺序

2018-08-12 16:03 232 查看
"""
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PyCharm Python