Python是否在每个循环中执行我的方法?

时间:2019-05-09 15:34:14

标签: python performance loops for-loop methods

我有一个包含大量信息的类(ElementList)。我已经实现了一种方法(.ToArray()),该方法获取对象的一些信息并将其放入数组或列表中。

我想循环这个数组。当我执行以下操作时:

for Element in ElementList.ToArray()
    Do stuff

它每次都执行.ToArray()吗?

1 个答案:

答案 0 :(得分:1)

根据https://docs.python.org/3/reference/compound_stmts.html#the-for-statement

for_stmt ::=  "for" target_list "in" expression_list ":" suite
          ["else" ":" suite]
  

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

因此,您的ElementList.ToArray()仅执行一次。

您可以通过使函数打印一些内容来进行实验验证;那么您会发现它只打印一次。

>>> def make_list():
...     print("I'm being evaluated!")
...     return [1,2,3]
...
>>> for x in make_list():
...     print(x)
...
I'm being evaluated!
1
2
3