函数体中是否存在yield关键字会改变函数的工作方式吗?

时间:2016-01-23 15:46:28

标签: python generator

似乎如果函数体中的任何地方至少有一个yield,那么即使未达到yield,它也会返回一个空的生成器而不是默认值。

def foo(l):
    for elem in l:
        yield elem

x = foo([])  # <generator object foo at 0x7f7393a0ae58>

这究竟是如何运作的?

1 个答案:

答案 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