Python выполняет мой метод каждый цикл? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть класс (ElementList), который содержит много информации.Я реализовал метод (.ToArray ()), который получает некоторую информацию об объекте и помещает ее в массив или список.

Я хочу зациклить этот массив.Когда я делаю следующее:

for Element in ElementList.ToArray()
    Do stuff

Выполняет ли он .ToArray () каждый раз?

1 Ответ

1 голос
/ 09 мая 2019

Согласно 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...