for循环中的函数是否被多次调用?

时间:2019-02-04 01:13:34

标签: python

我想知道此循环是否在迭代时多次调用“ hello” .upper()(或任何其他方法/函数):

for i in "hello".upper():  
    #DO SOMETHING  

考虑到“ hello”在循环中不会发生变化,这样做会更好吗?

string = "hello".upper()  
for i in string:  
    #DO SOMETHING  

2 个答案:

答案 0 :(得分:4)

循环目标仅评估一次,之后获得迭代器。然后,循环的每次迭代都会调用该迭代器上的next()

您可以将for a in b视为:

_iter = iter(b)  # Evaluates b only ONCE
while True:
    try:
        a = next(_iter)
    except StopIteration:
        break
    # loop body ...

答案 1 :(得分:0)

for语句的参数被求值一次。因此不会多次执行。