python - 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行为可以合理化吗?
解决方案
推荐阅读
- git - 仅将最近的历史推送到新的 Git 存储库
- java - 使用 java 执行包含带有 IN/INOUT 参数的存储过程调用的多行 PostgreSQL 脚本
- java - 使用线程安全方法从类中的多个方法填充 Collection 或 Map
- laravel - 如何在 laravel 迁移中添加外键?
- python-3.x - Keras:加载数据集并自动裁剪图像的相关区域
- awk - 从配置文件中提取并打印所有出现的磁盘文件 (.img)
- c - 需要测试异步 I/O
- .net-core - 根据 Kestrel 中的 Host 标头选择证书
- javascript - 使用 JS 在 MVC 中加载部分视图时出错
- c# - 每 n 次 C# 记录百分比进度