python - UnboundLocalError 试图从生成器内的外部闭包访问变量
问题描述
我对 Python 很陌生,但我正在尝试实现我的“行文件阅读器”,但遇到了一个错误,我不明白为什么它不起作用。
UnboundLocalError:分配前引用的局部变量“i”
生成器可以看到file
闭包中的变量就好了,为什么看不到i
?
import contextlib
@contextlib.contextmanager
def myOpen(name):
file = open(name)
i = 0
try:
def wrappedFileGen():
for line in file:
i = i + 1 #<-- UnboundLocalError: local variable 'i' referenced before assignment
print('Line:', i)
yield line
yield wrappedFileGen()
finally:
print('Total lines read:', i)
file.close()
with myOpen('test.txt') as file:
for line in file:
print('Content:', line)
# raise "Oops"
如果我i
在生成器中声明它可以工作
def wrappedFileGen():
i = 0 #<---- HERE
for line in file:
i = i + 1
print('Line:', i)
yield line
我需要i
在外部范围内,因为我想完成它
解决方案
推荐阅读
- assembly - .word 123:4 在 MIPS 汇编中做了什么,一个冒号和一个数字后面的另一个数字?
- python - 如何通过 BLE 将 Raspberry Pi 3 python 文件中的数据发送到手机?
- javascript - 在运行时使用 indexeddb 中的数据填充 cshtml
- android - 我可以使用 ViewPager2 设置非线性(旧式)动画吗?
- ios - 电话:url 方案在 ios 13 中显示为操作表?
- ubuntu - Kdenlive 录制纯音频画外音?
- android - MPPT 751 15 通过 VE.Direct 连接到 Raspberry Pi 3(Android of Things),但数据不可读
- java - 一次测试失败,如何解决这个问题?
- python - 用“范围”数据绘制直方图
- json - 如何使用 Jora 查询计算 JSON 中的唯一值