Naesar 发表于 2020-5-1 11:19:14

直接调用函数和赋值给变量调用的区别是什么?


如图,一个非常简单的程序,在不同的调用方式下出现了不同的结果。我的理解是直接调用的结果不会保存,所以每次执行 "fb()"都重新运行了这个函数。
两种执行方式本质区别是什么?我该查找哪方面的内容?谢谢大家回答啦!

zltzlt 发表于 2020-5-1 11:23:05

print(next(fb())) 每次调用都会产生一个新的生成器,所以每次都返回第一个值。

而 print(next(a)) 只是使用 a 一个生成器。

PS:如果你的问题已解决,请设置【最佳答案】。

Twilight6 发表于 2020-5-1 11:26:11

本帖最后由 Twilight6 于 2020-5-1 11:29 编辑

直接拿代码举例子吧~ 看
i =
def func():
    while True:
      i += 1
      yield i

print(next(func()))
print(next(func()))
a = func()
print(next(a))
输出结果:>>>1
>>>2
>>>3

还有:
i =
def func():
    while True:
      i += 1
      yield i

a = func()
print(next(func()))
print(next(func()))
print(next(a))
输出结果同上~
页: [1]
查看完整版本: 直接调用函数和赋值给变量调用的区别是什么?