我想知道此循环是否在迭代时多次调用“ hello” .upper()(或任何其他方法/函数):
for i in "hello".upper():
#DO SOMETHING
考虑到“ hello”在循环中不会发生变化,这样做会更好吗?
string = "hello".upper()
for i in string:
#DO SOMETHING
答案 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语句的参数被求值一次。因此不会多次执行。