【发布时间】:2021-07-22 13:31:26
【问题描述】:
这段代码抛出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 被声明为全局时实际发生了什么?
【问题讨论】:
-
@FloLie 那么如果 NameError 存在于内存中,为什么它会抛出?
-
1.您没有为
x分配任何值,这就是print(x)会抛出错误的原因。 2.当x被声明为全局时,它就变成了一个全局变量,它的作用域不仅在函数内部,而且在函数外部 -
@sittsering 那么这是否意味着如果我不为它分配任何值,它就不会在内存中?
-
会的。但问题是,它没有定义,在做
print(x)时会导致错误
标签: python global-variables global