Los 20 principios del Zen de Python explicados con ejemplos
El Zen de Python (también llamado PEP 20) son un conjunto de principios breves y sencillos que definen el diseño y la funcionalidad de Python como lenguaje de programación. Estos 20 principios encierran en sí mismos una filosofía de programación y de trabajo que se gestó en la cabeza de Tim Peters, un desarrollador de software que contribuyó enormemente al que hoy día es uno de los lenguajes de programación más versátiles y utilizados.
Con Python podemos hacer muchas cosas: analizar datos, crear un sistema de inteligencia artificial, desarrollar un sitio web, programar un software, y mucho más. Pero el Zen de Python no trata de las potencialidades de Python, sino de los fundamentos que lo subyacen independientemente de su aplicación.
¿Cómo ver el Zen de Python?
Para visualizar el Zen de Python, puedes utilizar el siguiente comando en una consola interactiva de Python:
import this
Este comando imprimirá una lista de principios que guían el diseño del lenguaje Python, conocidos como el Zen de Python. Si prefieres hacerlo desde un script de Python, simplemente incluye la misma línea en tu código y ejecútalo.
Aquí tienes un ejemplo de cómo se vería:
import this
Al ejecutar el script (python script.py), verás el Zen de Python en la salida de la consola.
Los 19 principios del Zen de Python con ejemplos
Te explicamos brevemente el significado de cada uno de los principios del Zen de Python y te ponemos un pequeño ejemplo aclaratorio:
Bello es mejor que feo
El código debe ser estéticamente agradable y fácil de leer.
x= [1,2,3]
y = [4, 5,6] z=x+y
# Código hermoso
lista_1 = [1, 2, 3]
lista_2 = [4, 5, 6]
lista_comb = lista_1 + lista_2
Explícito es mejor que implícito
Las decisiones en el código deben ser claras y evidentes.
from math import *
# Explícito
from math import sqrt, sin, cos
Simple es mejor que complejo
Prefiere soluciones simples a las complicadas.
def suma(a, b): return a + b
# Simple
def suma(a, b):
return a + b
Complejo es mejor que complicado
Si la solución necesita ser compleja, que no sea complicada innecesariamente.
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
# Complejo pero claro
def factorial(n):
resultado = 1
for i in range(1, n + 1):
resultado *= i
return resultado
Plano es mejor que anidado
Evita demasiados niveles de anidamiento.
for i in range(3):
for j in range(3):
print(i, j)
# Plano
for i in range(3):
print(i, 0)
print(i, 1)
print(i, 2)
Disperso es mejor que denso
Prefiere código que no esté apiñado, con suficiente espacio para ser legible.
a=1;b=2;c=3
# Plano
a = 1
b = 2
c = 3
La legibilidad cuenta
Es crucial que el código sea fácil de leer y entender.
def f(x): return x**2 + 2*x + 1
# Más legible
def cuadrado_mas_doble(x):
return x**2 + 2*x + 1
Los casos especiales no son tan especiales como para romper reglas
No modifiques los principios del Zen de Python por casos excepcionales.
if x == 1: print("Uno")
else:
if x == 2:
print("Dos")
# Sigue la regla
if x == 1:
print("Uno")
elif x == 2:
print("Dos")
Aunque lo práctico gana a lo puro
En caso de conflicto, opta por soluciones prácticas en lugar de teóricas.
def buscar_elemento(lista, elemento):
if elemento in lista:
return True
return False
# Práctico
def buscar_elemento(lista, elemento):
return elemento in lista
Los errores nunca deberían dejarse pasar silenciosamente
Deben solventarse los errores lo antes posible y de forma eficiente
try:
x = 1 / 0
except:
pass
return False
# Manejo de errores
try:
x = 1 / 0
except
ZeroDivisionError:
print("No se puede dividir por cero.")
A menos que hayan sido silenciados explícitamente
Si decides ignorar errores, hazlo de forma clara y justificada.
try:
x = 1 / 0
except ZeroDivisionError:
pass # Error conocido y manejado de forma explícita
Frente a la ambigüedad, no intentes adivinar
Evita suposiciones en el código; sé claro y explícito.
def procesar(datos):
# ¿Qué hace esta función? pass
# Claro
def procesar_lista_de_numeros(lista_de_numeros):
# Procesa la lista de números sumándolos
return sum(lista_de_numeros)
Debería haber una sola manera de hacerlo
Para cualquier tarea, debería haber una manera clara y preferida de hacerlo.
a = len([1, 2, 3])
b = [1, 2, 3].__len__()
# Una manera obvia
a = len([1, 2, 3])
Aunque esa manera puede no parecer obvia al principio
Algunas soluciones pueden no ser evidentes para todos, pero siguen siendo las preferidas.
Ahora es mejor que nunca
Es mejor hacer algo ahora que posponerlo indefinidamente.
Aunque es mejor no ir con prisas
A veces es mejor no hacer algo apresuradamente, pues podríamos meternos en un embrollo todavía más profundo.
Si es difícil de explicar, es mala idea
Si no puedes explicar fácilmente cómo funciona tu código, probablemente sea una mala solución.
Si es fácil de explicar, puede que sí sea buena idea
Si puedes explicar claramente tu código, es probable que sea una buena solución (¡pero no siempre!).
Los namespaces son una gran idea
Usa namespaces para organizar mejor todo el código y estructurarlo con claridad.
valor = 1
# Con espacio de nombres
class MiClase:
valor = 1
¿Cuál es el principio 20 del Zen de Python?
Nadie sabe cuál es el vigésimo principio del Zen de Python, puesto que nadie lo ha escrito todavía. Si bien se dice que son 20 principios, solo se conocen 19. El último, escríbelo tú.
Artículos relacionados
Las fechas en Java: todo lo que debes saber sobre las variables tipo date
Java es un lenguaje de programación que ha ido avanzando y mejorando con el tiempo.
Mi PC no enciende: causas y soluciones
¡Mi PC no enciende! Seguramente, en algún momento de tu vida, te has sentido identificado/a con esta afirmación y, además, desconocías la causa por la que tu orde
Programación de robots: estos son los lenguajes que debes conocer
Aprender a hablar con las máquinas ha sido uno de los principales desafíos para los ingenieros/as de robótica en las últimas décadas.