使用未初始化的全局变量抛出 NameError

using an uninitialized global variable throws NameError

此代码抛出 NameError: name 'x' is not defined":

def function():
    global x
    print(x)

function()
print(x)

但是,此代码有效并打印了两次“2”:

def function():
    global x
    x = 2
    print(x)

function()
print(x)

我的问题是,当 x 被声明为全局时实际发生了什么?

您没有定义x,导致错误。尝试使函数具有 x.

的参数
def function(x):
    print(x)

另外,当你全局化一个变量时,它的作用域不只是在函数内,而是在每个 function/class.

  • 卡登