如果我使用范围参数的函数,它们每次都会被调用吗?
for i in range(min(some_list), max(other_list)):
...
答案 0 :(得分:1)
通过一些小实验很容易回答你的问题。
In [294]: def foo(n):
...: print('in foo')
...: return n
...:
In [295]: for i in range(foo(5)):
...: print(i)
...:
in foo
0
1
2
3
4
所以,是的,range
的参数只被评估一次,就像任何其他函数调用的参数一样。
答案 1 :(得分:0)
在评论中回答了stack_n_queue:
不,调用for i in range(min(some_list), max(other_list))
不会导致作为参数传递的函数在range()
的每次迭代中被调用
答案 2 :(得分:0)
在创建min
对象/列表之前调用函数max
和range
,即在函数调用之前计算参数表达式。
因此,他们只被召唤一次。