似乎如果函数体中的任何地方至少有一个yield,那么即使未达到yield,它也会返回一个空的生成器而不是默认值。
def foo(l):
for elem in l:
yield elem
x = foo([]) # <generator object foo at 0x7f7393a0ae58>
这究竟是如何运作的?
答案 0 :(得分:1)
来自文档(https://docs.python.org/3/reference/expressions.html#yield-expressions)
在函数体中使用yield表达式会导致该函数 是一个发电机。
也许你的意思是yield elem
而不是yield l
?
def foo(l):
for elem in l:
yield elem
for t in foo([1,2,3]):
print(t)
1
2
3