首页 > 解决方案 > Python 3 变量作用域(2 个测试用例):y4 是局部变量吗?分配前是否引用了 y4?

问题描述

下面的代码比我预期的更不可预测。

测试用例 1:

# Line with print is OK:

y4 = 0    

def G6():
    print(f"y4={y4}")

G6()

输出:y4=0

测试用例 2:

# Line with print throws error this time:
# UnboundLocalError: local variable 'y5' referenced before assignment
# But why exactly? If y5 is a local variable, then y4 (above) should be too, IMO.
# Is y4 (above) even a local variable? Is y4 (above) also being referenced before assignment, or not?

y5 = 0    

def G7():
    print(f"y5={y5}")
    y5 += 2

G7()

print() 行上的输出:UnboundLocalError: local variable 'y5' referenced before assignment

这种python行为可以合理化吗?

标签: python

解决方案


推荐阅读