【发布时间】:2013-05-22 17:43:41
【问题描述】:
有这个代码:
def f():
return 3
return (i for i in range(10))
x = f()
print(type(x)) # int
def g():
return 3
for i in range(10):
yield i
y = g()
print(type(y)) # generator
当有返回生成器语句时,为什么f 返回int?我猜yield 和生成器表达式都返回生成器(至少在删除语句return 3 时),但是当有一次生成器表达式返回和第二次有yield 关键字时,还有其他一些函数编译规则里面?
这是在 Python 3.3 中测试的
【问题讨论】:
-
你的 g() 方法不正确,你不能在同一个函数中混合 return 和 yield,你会得到一个错误。粘贴真实代码。
-
@LennartRegebro:事实上,您可以在同一个函数中混合收益和收益。在 Python 3.2 及更早版本中,您无法返回 值(即
SyntaxError),但在 Python 3.3 及更高版本中,您甚至可以这样做。见Return in generator together with yield in Python 3.3 -
啊,好吧,不知道。