我有一个返回整数列表的函数。Python:for循环'header'中的函数
def my_function(param: int)->list:
do_sth...
return list
在另一个模块中,我有一个for循环迭代通过该函数的返回列表。 现在我的问题是:
for x in my_function(x):
do_sth...
没有for循环调用这个函数的每一个回路或仅一次的开始?
我有一个返回整数列表的函数。Python:for循环'header'中的函数
def my_function(param: int)->list:
do_sth...
return list
在另一个模块中,我有一个for循环迭代通过该函数的返回列表。 现在我的问题是:
for x in my_function(x):
do_sth...
没有for循环调用这个函数的每一个回路或仅一次的开始?
其实答案是只能调用一次,当你做以下事情:
for x in my_function(x):
do_sth...
创建my_function(X)将首先进行评估,然后返回一个列表,这样的声明是这样的:
for x in [...]:
do_sth...
您可以在创建my_function正文中添加打印功能,您将看到打印函数被调用一次。
这确实是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()
仅当for循环调用一次跑。
希望这有助于!
在你的功能(或打印)中添加一个全局计数器,你将得到你的答案。然而,我发现你的电话很奇怪,因为你在'for x in my_function(x)'中使用x两次' – Nathan
[for循环评估它的表达式列表多少次?](https://stackoverflow.com/问题/ 24470072 /多少次 - 做一个for-loop-evaluate-its-expression-list) – Sayse
* [“表达式列表被评估一次;它应该产生一个可迭代的对象。“](https://docs.python.org/3/reference/compound_stmts.html#for)* – poke