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
相关文章推荐
- Python的方法解析顺序(MRO)
- Python MRO(Method Resolution Order)方法解析顺序
- Python的方法解析顺序(MRO)
- python 变量名解析 LEGB原则
- python 多重继承的方法解析顺序
- Python的方法解析顺序(MRO)
- 几行代码理解Python变量访问的LEGB顺序
- python 详解类class的方法解析顺序MRO(Method Resolution Order)(六)
- 【python】详解类class的方法解析顺序MRO(Method Resolution Order)(六)
- Python的方法解析顺序(MRO)
- python的方法解析顺序。。。这就是为啥子java是单继承,接口多继承
- 零基础学python-16.3 变量名解析:LEGB原则
- 零基础学python-16.3 变量名解析:LEGB原则
- sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO
- Python的方法解析顺序(MRO)
- python Tricks —— list 镜像复制与 list comprehension 列表解析的顺序
- 详解Python函数作用域的LEGB顺序
- 详解Python函数作用域的LEGB顺序
- Python的方法解析顺序(MRO)[转]
- Python多重继承的方法解析执行顺序实例分析