В настоящее время я прохожу учебник по Lynda Python и в разделе о генераторах вижу следующий код:
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
else:
return True
Сначала я его не уловил, но, просматривая код, я заметил, что ключевое слово else
содержит полный цикл for и if
на одном уровне отступа. К моему удивлению, код не только работает, но и выдает правильное поведение.
Если бы я заменил цикл for простым оператором print("Hello, World")
, только тогда я получу ожидаемую ошибку интерпретатора.
Что послужило причиной этого синтаксиса и почему он работает с операторами цикла, но не с другими, такими как print()
?
Для справки, я бы ожидал, что код будет написан следующим образом:
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
return True