Python для цикла, повторяющегося с одинаковыми именами переменных, выдает ошибку - PullRequest
0 голосов
/ 27 мая 2018

Я изучаю Python.При использовании Python 3.6.0 REPL.

a = [1, 2, 3]
for a in a :
   print(a)

output:

1
2
3

опять:

output:

*.1010 *

Я мог видеть это значение 'a'.

>>>a
3

Он работает с другими итераторами, такими как i

Я не знаю, как искать ошибку вGoogle.Почему a изменился?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

в python, когда вы делаете

for x in y:
    pass#your code here

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

, если вы это сделаетечто-то вроде

for a in range(10):
    pass
print(a)

будет напечатано 9, поскольку это последнее значение a было внутри цикла.

для конкретного случая, в котором оба итерируемы (список)и переменная, используемая для итерации по ней, именуется одинаково, как вы можете видеть a изменения для каждого значения, а затем остается последним значением, как я уже упоминал.

тогда, когда вы запускаете его во второй раз, a - это просто целое число, а не список, и поэтому его нельзя повторять.

, если вы хотите знать, почему циклы не работаютпрерывание после первой итерации (так как a не является исходным списком после первой итерации), это потому, что исходный список все еще находится в памяти, пока цикл не завершится, он просто не адресуется по имени, после окончания цикла он будет полностью удалениз памяти

0 голосов
/ 27 мая 2018

Конечно, это вызовет исключение.Это то же имя в той же области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...