Actualmente estoy pasando por el tutorial Lynda Python y en el apartado de los generadores que veo el siguiente código:Python: para el bucle entre if-else, ¿cómo/por qué funciona esto?
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
else:
return True
no he entendido que en un primer momento, pero como yo estaba pasando por el código Noté que la palabra clave else
tenía un for-loop completo entre ella y un if
en el mismo nivel de sangría. Para mi sorpresa, el código no solo se ejecuta, realmente produce el comportamiento correcto.
Si tuviera que reemplazar el for-loop con una simple declaración print("Hello, World")
, solo entonces obtendré un error esperado del intérprete.
¿Cuál es el razonamiento detrás de esta sintaxis, y por qué funciona con enunciados de bucle pero no en otros como print()
?
A modo de referencia, lo que habría esperado el código para ser escrito como la siguiente:
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
return True
Bueno, todo esto me parece normal ... de hecho es equivalente a la forma esperada (en el segundo bloque de código), porque el corte nunca se llama en el ciclo – wim