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
Sistemas MES: qué es, origen y funciones
Un Sistema de Ejecución de Manufactura (MES, por sus siglas en inglés) es una solución de software que proporciona una visión en tiempo real de los procesos de manufactura
¿En qué consiste un menú sticky y cómo implementarlo en una web?
Actualmente, la experiencia del usuario dentro de una página web es uno de los elementos más importantes, tanto para disciplinas como el SEO, pero también para que exista una mayor
Todo lo que debes saber sobre un ataque Man-in-the-Middle
¿No sabes qué es un ataque Man-in-the-Middle?