【问题标题】:using an uninitialized global variable throws NameError使用未初始化的全局变量会引发 NameError
【发布时间】: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


【解决方案1】:

您没有定义x,导致错误。试着让函数有一个x的参数。

def function(x):
    print(x)

另外,当你全球化一个变量时,它的作用域不仅仅是在函数内,而是在每个函数/类中。

  • 卡登

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多