2017-09-15 10 views
0

私は整数のリストを返す関数を持っています。Python:for-loop 'header'の関数

def my_function(param: int)->list: 
    do_sth... 
    return list 

別のモジュールでは、返された関数のリストを繰り返し処理するforループがあります。 は今、私の質問は次のとおりです。

for x in my_function(x): 
    do_sth... 

forループごとにループまたは開始時に一度だけ、この関数を呼び出していますか?

+2

機能(または印刷物)にグローバルカウンタを追加すれば、あなたの答えが得られます。しかし、私はあなたの呼び出しが奇妙であるとみなします。あなたの呼び出しは、あなたのuse xとして、両方の時間 'for x in my_function(x) 'にあります。 – Nathan

+4

[forループは式リストを何回評価するのですか?](https://stackoverflow.com/質問/ 24470072/for-loop-evaluate-for-expression-list) – Sayse

+1

* ["表現リストは一度評価されます。 "](https://docs.python.org/3/reference/compound_stmts.html#for)* – poke

答えて

1

実は答えは次のことを行うとき、一度だけ呼び出すです:

for x in my_function(x): 
    do_sth... 

はmy_function(x)が最初に評価され、それがリストを返すので、文はこのようなものです:

for x in [...]: 
    do_sth... 

あなたはmy_functionの体に印刷機能を追加したり、印刷機能は一度だけ呼び出されることがわかります。

1

これは実際にthis questionの複製です。しかし、専門用語に入ることなく、より明確な説明(クレジット@Nathan)のために、ここでの例です:

>>> def a(): 
...  print("a() was called") 
...  return [1, 2, 3, 4, 5] 
... 
>>> for i in a(): 
...  print(i) 
... 
a() was called 
1 
2 
3 
4 
5 

あなたがここに見ることができるようにループのためだったときに、機能a()は一度だけ呼ばれていました走る

これが役に立った!