声明全局变量的函数在调试模式下不起作用

时间:2019-06-18 01:12:57

标签: python pycharm

我正在调试程序。在调试控制台中,我决定编写以下函数:

def func():
    global a
    a=5

func()

a

a未定义!

为什么在调试控制台中会发生这种情况?

1 个答案:

答案 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中,仅在函数内部引用的变量是隐式全局的。如果在函数体内任何位置为变量分配了值,除非明确声明为全局变量,否则假定该变量为局部变量。

     

尽管起初有些令人惊讶,但片刻的考虑解释了这一点。一方面,要求全局分配变量可防止意外副作用。另一方面,如果所有全局引用都需要全局,那么您将一直使用全局。您必须将对内置函数或导入模块的组件的所有引用声明为全局引用。这种混乱将破坏全球宣言对确定副作用的有用性。