Los 20 principios del Zen de Python explicados con ejemplos

Tabla de contenidos

Tabla de contenidos

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:

# Zen 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:

# script.py

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.

# Código feo

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.

# Implícito

from math import *

# Explícito

from math import sqrt, sin, cos

Simple es mejor que complejo

Prefiere soluciones simples a las complicadas.

# Complejo

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.

# Complicado

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.

# Anidado

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.

# Denso

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.

# Menos legible

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.

# Caso especial que rompe la regla

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.

# Puro pero poco práctico

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

# Error

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.

#Error

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.

#Ambiguo

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.

# Manera alternativa

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.

# Sin espacio de nombres

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ú.

Compartir en:

Artículos relacionados

adivinar loteria con chatgpt

Número de lotería con ChatGPT

Son varias las noticias que se han dado a conocer acerca de cual fue el número de la lotería de ChatGPT, que esta inteligencia artificial predijo como ganador del sorteo de la Lotería de Navidad del año 2023, así como otros casos en los

Cómo afecta la inteligencia artificial al ser humano

Son diversas las maneras cómo afecta la inteligencia artificial al ser humano, puesto que es una de las tecnologías que tiene más oportunidades de crecimiento en la actualidad, de forma que, todas aquellas empresas y negocios que desean tener un verdadero proceso de

Sophia Robot: el humanoide que transformará el futuro

La robótica ha evolucionado a pasos agigantados en los últimos años, y uno de los desarrollos más llamativos y populares es el robot Sophia, un humanoide creado por Hanson Robotics.  De este modo, Sophia no es tan solo otro robot más; esta ha

¿Cuál es la competencia de ChatGPT?

Existen diversas alternativas de la competencia de ChatGPT que ofrecen funcionalidades similares a esta inteligencia artificial desarrollada por OpenAI. De esta manera, estas herramientas no sólo compiten en términos de capacidad de procesamiento de lenguaje, sino también en aspectos como facilidad de uso,

Scroll al inicio