【发布时间】:2012-04-28 03:07:08
【问题描述】:
如果函数需要修改全局范围内声明的变量,则需要使用全局声明。但是,如果函数只需要读取一个全局变量,它可以不使用全局声明来完成:
X = 10
def foo():
global X
X = 20 # Needs global declaration
def bar():
print( X ) # Does not need global
我的问题是关于 Python 的设计:为什么 Python 设计为允许在不使用全局声明的情况下读取全局变量?也就是说,为什么只强制赋值具有全局,为什么不强制全局读取呢? (这会使它变得均匀而优雅。)
注意:我可以看到阅读时没有歧义,但在分配时不清楚是否打算创建一个新的局部变量或分配给全局变量。但是,我希望 BDFL 这种不均衡的设计选择有更好的理由或意图。
【问题讨论】: