lai*_*e9m 0 python debugging generator pydev
我在 Windows 7 x64 上使用 pydev,我发现生成器函数中的断点被忽略(如果我注释掉yield,一切正常)。
然后我发现了一个旧的 SO question Python debugger step in generators?
答案是“我刚刚测试了 eclipse,它将在安装 pydev 的情况下进行调试。”
但是当我测试代码时,断点仍然被忽略。
def example(n):
i = 1
while i <= n:
yield i
i += 1
print "hello"
print "goodbye"
if __name__ == '__main__':
example(8)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
当我使用调试器准确运行旧问题的“使用生成器”部分中的代码(不是您的问题中的内容)并在i += 1语句上放置断点时,它会停止在那里运行,并将继续这样做时间我按F8恢复,直到发电机耗尽。我正在为 Eclipse 2.8.2.2013090511 使用 PyDev。
问题是你的代码只调用生成器函数一次,它只返回一个迭代器对象——它实际上并不执行函数中的代码。为此,您需要以某种方式迭代返回的对象——通过for语句隐式地或通过调用其next方法显式地迭代。请参阅文档的生成器部分中以“当您调用生成器函数时,它不会返回单个值;...”开头的段落。
这是我使用的代码:
def example(n):
i = 1
while i <= n:
yield i
i += 1
print("hello")
for n in example(3):
print(n)
print("goodbye")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |