python for循环中的函数会被执行多次吗?

Hai*_*ang 6 python

假设我有一个返回列表的方法的以下类:

Class C():
  def f():
    return [1,2,3]
Run Code Online (Sandbox Code Playgroud)

如果我循环这个方法如下:

c=C()
for i in c.f():
  print i
Run Code Online (Sandbox Code Playgroud)

在for循环中,cf()会被执行多次吗?如果是,为了得到它一次,我是否必须在循环之外做任务,或者有一些微不足道的方法?

Der*_*itz 5

In [395]: def tester():
     ...:     print "Tester Called!"
     ...:     return [1,2,3]

In [396]: for i in tester():
     ...:     pass
Tester Called!
Run Code Online (Sandbox Code Playgroud)

似乎答案是否定的。


Dmi*_* B. 5

来自python 文档

for 语句用于迭代序列(例如字符串、元组或列表)或其他可迭代对象的元素:

for_stmt ::=  "for" target_list "in" expression_list ":" suite
             ["else" ":" suite] 
Run Code Online (Sandbox Code Playgroud)

表达式列表被评估一次;它应该产生一个可迭代的对象。