针对循环中的函数调用多次?

问题描述 投票:0回答:2

我想知道,如果.upper这个循环调用多次“你好”()(或任何其他方法/功能),而迭代:

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

考虑到“你好”并不在循环改变,这会是更好的性能明智?:

string = "hello".upper()  
for i in string:  
    #DO SOMETHING  
python
2个回答
4
投票

环路目标只计算一次,获得一个迭代之后。然后,对迭代next()被称为该循环的每次迭代。

你可以认为for a in b为:

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

0
投票

该参数for语句计算一次。所以它不会被执行多次。

© www.soinside.com 2019 - 2024. All rights reserved.