Всякий раз, когда вы делаете это:
for record_job in range(0,1000):
record_job
будет последовательно установлен на 0
, 1
, 2
и т. Д. c. Например:
numbers = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
for key, value in numbers.items():
print(key)
for i in range(0, 1000):
print('-', i)
if i == value:
break
Будет печатать:
one
- 0
- 1
two
- 0
- 1
- 2
three
- 0
- 1
- 2
- 3
four
- 0
- 1
- 2
- 3
- 4
five
- 0
- 1
- 2
- 3
- 4
- 5
Но если бы i
было бы напечатано вне циклов, как показано ниже:
numbers = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
for key, value in numbers.items():
print(key)
for i in range(0, 1000):
print('-', i)
if i == value:
break
print(i)
Он напечатает 5
, потому что это было последнее значение i
, назначенное для текущей области. Что, как я полагаю, вы заметили? Если вы хотите очистить i для текущей области, то вы должны удалить его после завершения циклов:
numbers = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
for key, value in numbers.items():
print(key)
for i in range(0, 1000):
print('-', i)
if i == value:
break
del i
print(i) # NameError, i is no longer defined
Тем не менее, вы не должны называть свой словарь dict
, потому что, делая это, вы слежка за встроенным, и это не очень хорошая практика.