<p>有这样的代码:</p>
<pre><code>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
</code></pre>
<p>当有返回生成器语句时,为什么<code>f</code>返回{<cd2>}?我想<code>yield</code>和generator expression都返回generator(至少在删除<code>return 3</code>语句时),但是当有一次生成器表达式返回,第二次有<code>yield</code>关键字时,函数编译还有其他规则吗?在</p>
<p>这在python3.3中进行了测试</p>