Интуитивно, ключевое слово возвращает значение из функции, не оставляя его, т.е. в Вашем примере кода это возвращает ток item
значение и затем возобновляет цикл. Более официально это используется компилятором для генерации кода для итератор . Итераторы являются функциями тот возврат IEnumerable
объекты. MSDN имеет несколько статьи о них.
Поздно стороне, но для любого, для которого определяют задачу с созданием их собственного или хочет видеть, как это работало бы, вот функция с добавленной премией реконструкции стартстопных значений на основе желаемого инкремента:
def RANGE(start, stop=None, increment=1):
if stop is None:
stop = start
start = 1
value_list = sorted([start, stop])
if increment == 0:
print('Error! Please enter nonzero increment value!')
else:
value_list = sorted([start, stop])
if increment < 0:
start = value_list[1]
stop = value_list[0]
while start >= stop:
worker = start
start += increment
yield worker
else:
start = value_list[0]
stop = value_list[1]
while start < stop:
worker = start
start += increment
yield worker
Отрицательный инкремент:
for i in RANGE(1, 10, -1):
print(i)
Или, с инвертированным стартстопным:
for i in RANGE(10, 1, -1):
print(i)
Вывод:
10
9
8
7
6
5
4
3
2
1
Регулярный инкремент:
for i in RANGE(1, 10):
print(i)
Вывод:
1
2
3
4
5
6
7
8
9
Нулевой инкремент:
for i in RANGE(1, 10, 0):
print(i)
Вывод:
'Error! Please enter nonzero increment value!'