您好我是Python的新手。在学习时我遇到了以下代码片段,因为我无法理解代码的行为。 这是第一个案例
#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
这两种情况是相同的,除了第二种情况有一个额外的印刷声明。为什么第二个代码片段的第一个print语句使Python抛出异常?
答案 0 :(得分:3)
函数外部的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
都是局部变量,但在第二个函数中,您在该函数中定义它之前尝试使用它。因此错误。