也就是说if
、while
,for
并不会影响变量的作用域!!!,python中没有块作用域。
这就能解释python的if __name__=='__mian__'
中声明的变量同样是全局变量
print(g)
if __name__=='__main__':
g='global'
#输出为:global
LEGB 表示的是 Local, Enclosing, Global, and Built-in 。同名变量优先访问局部变量,其次是闭包变量,其次是全局变量,最后才是内置变量。
作用域转换:关键字global
与nolocal(嵌套函数中使用)
存储变量的地方,用字典实现。__dict__
来查看这些字典。
The place where a variable is stored.
import sys
print(sys.path)
#等价于如下命令
print(sys.__dict__['path'])
1 . https://stackoverflow.com/questions/2829528/whats-the-scope-of-a-variable-initialized-in-an-if-statement。
2. https://www.datacamp.com/community/tutorials/scope-of-variables-python