据我了解,Python 有一个单独的函数命名空间,所以如果我想在函数中使用全局变量,我可能应该使用 global
。
但是,即使没有 global
,我也能够访问全局变量:
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
... return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
为什么这行得通?
另请参阅 UnboundLocalError on local variable when reassigned after first use 尝试在没有 global
的情况下 分配给 全局变量时发生的错误。有关如何 使用全局变量的一般问题,请参阅在函数 中使用全局变量。
原文由 nik 发布,翻译遵循 CC BY-SA 4.0 许可协议
关键字
global
仅对在本地上下文中更改或创建全局变量有用,尽管创建全局变量很少被认为是一个好的解决方案。以上将为您提供:
而如果您使用
global
语句,则该变量将在函数范围“外部”可用,从而有效地成为全局变量。所以上面的代码会给你:
此外,由于 python 的特性,您还可以使用
global
在本地上下文中声明函数、类或其他对象。尽管我建议不要这样做,因为如果出现问题或需要调试,它会导致噩梦。