我正在调试程序。在调试控制台中,我决定编写以下函数:
def func():
global a
a=5
func()
a
a未定义!
为什么在调试控制台中会发生这种情况?
答案 0 :(得分:0)
如果要使用 a 外部函数,则应先声明它。
a = 0
def func():
global a
a=5
func()
print(a)
在这种情况下将是6和3
test=6
def func():
global test
print(test)
test=3
f()
print(test)
仅供参考:What are the rules for local and global variables in Python?
在Python中,仅在函数内部引用的变量是隐式全局的。如果在函数体内任何位置为变量分配了值,除非明确声明为全局变量,否则假定该变量为局部变量。
尽管起初有些令人惊讶,但片刻的考虑解释了这一点。一方面,要求全局分配变量可防止意外副作用。另一方面,如果所有全局引用都需要全局,那么您将一直使用全局。您必须将对内置函数或导入模块的组件的所有引用声明为全局引用。这种混乱将破坏全球宣言对确定副作用的有用性。