【问题标题】:Understanding UnboundLocalError in Python了解 Python 中的 UnboundLocalError
【发布时间】:2015-04-18 15:12:35
【问题描述】:

您好,我是 Python 的新手。在学习时,我遇到了下面的代码 sn-ps,因为我无法理解代码的行为。 这是第一种情况

#Case 1
x=1
def func():
    x=5
    print(x)

func()
5

这是第二种情况

#Case 2  
x=1
def func():
    print(x) #First print statement
    x=5
    print(x) #Second print statement

func()
UnboundLocalError: local variable 'x' referenced before assignment

这两种情况是相同的,只是第二种情况有一个额外的打印语句。为什么第二个 sn-p 的第一个 print 语句让 Python 抛出异常?

【问题讨论】:

  • 我认为第二种情况下的第一个打印语句将打印全局变量 x 的值,即 1,第二个将打印本地 x 的值,即 5。顺便说一句,感谢您的回答。
  • 谢谢西蒙!现在我明白了。

标签: python python-3.x


【解决方案1】:

函数外部的x 在那里,但x 也在两个函数中定义为局部变量,您必须在使用它之前定义它。这并不意味着 Python 将首先从函数外部使用 x,然后允许您将 x 重新定义为局部变量,然后在函数的其余部分使用局部变量 x

所以真正的区别在于:

def func():
    x=5
    print(x)

def func():
    print(x) #First print statement
    x=5
    print(x) #Second print statement

在这两个函数中,x 是一个局部变量,但在第二个函数中,您尝试在该函数中定义它之前使用它。因此出现错误。

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2021-12-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2019-11-03
    相关资源
    最近更新 更多