Я использую цикл for с уже используемой переменной, а цикл for перезаписывает ранее определенную переменную. Я понимаю, что самым простым способом было бы использовать другое имя переменной, но есть ли другой способ?

x = 999

for x in range(10):
    pass

print(x)

9

-3
pasei 1 Май 2019 в 23:59

3 ответа

Лучший ответ

Нет, это невозможно. Переменная не будет затенена, а будет присвоена значению каждой итерации в цикле. Единственный угловой случай, когда это не так, - это случай, когда объект, повторяемый по иерархии, вызывает исключение перед получением значения.

3
user2722968 1 Май 2019 в 21:02

Вы можете, но только если вы поместите цикл for в более низкую область, как внутри функции

x = 999
def func:
    for x in range(10): pass
print(x)  # 999
0
Alec Alameddine 1 Май 2019 в 21:04

Переменная будет перезаписана, если вы не поместите цикл в другую область

Например, внутри функции:

x = 999

def do_stuff():
  for x in range(10):
     pass

do_stuff()
print(x)

Выход:

999

За исключением содержания цикла в другой области, это невозможно, и вам, скорее всего, потребуется переименовать переменную.

0
danny bee 1 Май 2019 в 21:04