{"id":3214,"date":"2025-10-06T16:08:42","date_gmt":"2025-10-06T14:08:42","guid":{"rendered":"https:\/\/tecnologia.euroinnova.com\/los-20-principios-del-zen-de-python-explicados-con-ejemplos\/"},"modified":"2025-10-07T14:52:57","modified_gmt":"2025-10-07T12:52:57","slug":"zen-de-python","status":"publish","type":"post","link":"https:\/\/tecnologia.euroinnova.com\/en\/zen-de-python","title":{"rendered":"The 20 principles of Python Zen explained with examples"},"content":{"rendered":"<p>El Zen de Python (tambi\u00e9n llamado PEP 20) son un <strong>conjunto de principios breves y sencillos que definen el dise\u00f1o y la funcionalidad de Python <\/strong>como lenguaje de programaci\u00f3n. Estos 20 principios encierran en s\u00ed mismos una filosof\u00eda de programaci\u00f3n y de trabajo que se gest\u00f3 en la cabeza de Tim Peters, un desarrollador de software que contribuy\u00f3 enormemente al que hoy d\u00eda es uno de los lenguajes de programaci\u00f3n m\u00e1s vers\u00e1tiles y utilizados.<\/p>\n<p>Con Python podemos hacer muchas cosas: analizar datos, <a href=\"https:\/\/tecnologia.euroinnova.com\/como-programar-una-ia\" target=\"_blank\" rel=\"noopener\">crear un sistema de inteligencia artificial<\/a>, desarrollar un sitio web, programar un software, y mucho m\u00e1s. Pero el Zen de Python no trata de las potencialidades de Python, sino de los fundamentos que lo subyacen independientemente de su aplicaci\u00f3n.<\/p>\n<h2 id=\"como-ver-el-zen-de-python\">\u00bfC\u00f3mo ver el Zen de Python?<\/h2>\n<p>Para visualizar el Zen de Python, puedes utilizar el siguiente comando en una consola interactiva de Python:<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Zen de Python<\/span><\/p>\n<p>import this<\/p><\/div>\n<p>Este comando imprimir\u00e1 una lista de principios que gu\u00edan el dise\u00f1o del lenguaje Python, conocidos como el Zen de Python. Si prefieres hacerlo desde un script de Python, simplemente incluye la misma l\u00ednea en tu c\u00f3digo y ejec\u00fatalo.<\/p>\n<p>Aqu\u00ed tienes un ejemplo de c\u00f3mo se ver\u00eda:<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># script.py<\/span><\/p>\n<p>import this<\/p><\/div>\n<p>Al ejecutar el script (python script.py), ver\u00e1s el Zen de Python en la salida de la consola.<\/p>\n<h2 id=\"los-19-principios-del-zen-de-python-con-ejemplos\">Los 19 principios del Zen de Python con ejemplos<\/h2>\n<p>Te explicamos brevemente el significado de cada uno de los principios del Zen de Python y te ponemos un peque\u00f1o ejemplo aclaratorio:\u00a0<\/p>\n<h3 id=\"bello-es-mejor-que-feo\">Bello es mejor que feo<\/h3>\n<p>El c\u00f3digo debe ser est\u00e9ticamente agradable y f\u00e1cil de leer.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># C\u00f3digo feo<\/span><\/p>\n<p>x= [1,2,3] <br \/>y = [4, 5,6] z=x+y<\/p>\n<p><span style=\"color: #7e8c8d;\"># C\u00f3digo hermoso<\/span><\/p>\n<p>lista_1 = [1, 2, 3]<br \/>lista_2 = [4, 5, 6]<br \/>lista_comb = lista_1 + lista_2<\/div>\n<h3 id=\"explicito-es-mejor-que-implicito\">Expl\u00edcito es mejor que impl\u00edcito<\/h3>\n<p>Las decisiones en el c\u00f3digo deben ser claras y evidentes.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Impl\u00edcito<\/span><\/p>\n<p>from math import *<\/p>\n<p><span style=\"color: #7e8c8d;\"># Expl\u00edcito<\/span><\/p>\n<p>from math import sqrt, sin, cos<\/p><\/div>\n<h3 id=\"simple-es-mejor-que-complejo\">Simple es mejor que complejo<\/h3>\n<p>Prefiere soluciones simples a las complicadas.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Complejo<\/span><\/p>\n<p>def suma(a, b): return a + b<\/p>\n<p><span style=\"color: #7e8c8d;\"># Simple<\/span><\/p>\n<p>def suma(a, b):<br \/>return a + b<\/div>\n<h3 id=\"complejo-es-mejor-que-complicado\">Complejo es mejor que complicado<\/h3>\n<p>Si la soluci\u00f3n necesita ser compleja, que no sea complicada innecesariamente.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Complicado<\/span><\/p>\n<p>def factorial(n): <br \/>if n == 0:<br \/>return 1<br \/>else:<br \/>return n * factorial(n &#8211; 1)<\/p>\n<p><span style=\"color: #7e8c8d;\"># Complejo pero claro<\/span><\/p>\n<p>def factorial(n): <br \/>resultado = 1<br \/>for i in range(1, n + 1):<br \/>resultado *= i <br \/>return resultado<\/div>\n<h3 id=\"plano-es-mejor-que-anidado\">Plano es mejor que anidado<\/h3>\n<p>Evita demasiados niveles de anidamiento.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Anidado<\/span><\/p>\n<p>for i in range(3):<br \/>for j in range(3):<br \/>print(i, j)<\/p>\n<p><span style=\"color: #7e8c8d;\"># Plano<\/span><\/p>\n<p>for i in range(3):<br \/>print(i, 0)<br \/>print(i, 1)<br \/>print(i, 2)<\/div>\n<h3 id=\"disperso-es-mejor-que-denso\">Disperso es mejor que denso<\/h3>\n<p>Prefiere c\u00f3digo que no est\u00e9 api\u00f1ado, con suficiente espacio para ser legible.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Denso<\/span><\/p>\n<p>a=1;b=2;c=3<\/p>\n<p><span style=\"color: #7e8c8d;\"># Plano<\/span><\/p>\n<p>a = 1<br \/>b = 2<br \/>c = 3<\/div>\n<h3 id=\"la-legibilidad-cuenta\">La legibilidad cuenta<\/h3>\n<p>Es crucial que el c\u00f3digo sea f\u00e1cil de leer y entender.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Menos legible<\/span><\/p>\n<p>def f(x): return x**2 + 2*x + 1<\/p>\n<p><span style=\"color: #7e8c8d;\"># M\u00e1s legible<\/span><\/p>\n<p>def cuadrado_mas_doble(x):<br \/>return x**2 + 2*x + 1<\/div>\n<h3 id=\"los-casos-especiales-no-son-tan-especiales-como-para-romper-reglas\">Los casos especiales no son tan especiales como para romper reglas<\/h3>\n<p>No modifiques los principios del Zen de Python por casos excepcionales.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Caso especial que rompe la regla<\/span><\/p>\n<p>if x == 1: print(\u00abUno\u00bb)<br \/>else:<br \/>if x == 2:<br \/>print(\u00abDos\u00bb)<\/p>\n<p><span style=\"color: #7e8c8d;\"># Sigue la regla<\/span><\/p>\n<p>if x == 1:<br \/>print(\u00abUno\u00bb)<br \/>elif x == 2:<br \/>print(\u00abDos\u00bb)<\/div>\n<h3 id=\"aunque-lo-practico-gana-a-lo-puro\">Aunque lo pr\u00e1ctico gana a lo puro<\/h3>\n<p>En caso de conflicto, opta por soluciones pr\u00e1cticas en lugar de te\u00f3ricas.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Puro pero poco pr\u00e1ctico<\/span><\/p>\n<p>def buscar_elemento(lista, elemento):<br \/>if elemento in lista:<br \/>return True<br \/>return False<\/p>\n<p><span style=\"color: #7e8c8d;\"># Pr\u00e1ctico<\/span><\/p>\n<p>def buscar_elemento(lista, elemento):<br \/>return elemento in lista<\/div>\n<h3 id=\"los-errores-nunca-deberian-dejarse-pasar-silenciosamente\">Los errores nunca deber\u00edan dejarse pasar silenciosamente<\/h3>\n<p>Deben solventarse los errores lo antes posible y de forma eficiente<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Error<\/span><\/p>\n<p>try:<br \/>x = 1 \/ 0 <br \/>except:<br \/>pass<br \/>return False<\/p>\n<p><span style=\"color: #7e8c8d;\"># Manejo de errores<\/span><\/p>\n<p>try:<br \/>x = 1 \/ 0<br \/>except<br \/>ZeroDivisionError:<br \/>print(\u00abNo se puede dividir por cero.\u00bb)<\/div>\n<h3 id=\"a-menos-que-hayan-sido-silenciados-explicitamente\">A menos que hayan sido silenciados expl\u00edcitamente<\/h3>\n<p>Si decides ignorar errores, hazlo de forma clara y justificada.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\">#Error<\/span><\/p>\n<p>try:<br \/>x = 1 \/ 0<br \/>except ZeroDivisionError:<br \/>pass <span style=\"color: #7e8c8d;\"># Error conocido y manejado de forma expl\u00edcita<\/span><\/div>\n<h3 id=\"frente-a-la-ambiguedad-no-intentes-adivinar\">Frente a la ambig\u00fcedad, no intentes adivinar<\/h3>\n<p>Evita suposiciones en el c\u00f3digo; s\u00e9 claro y expl\u00edcito.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\">#Ambiguo<\/span><\/p>\n<p>def procesar(datos):<br \/><span style=\"color: #7e8c8d;\"># \u00bfQu\u00e9 hace esta funci\u00f3n?<\/span> pass<\/p>\n<p><span style=\"color: #7e8c8d;\"># Claro<\/span><\/p>\n<p>def procesar_lista_de_numeros(lista_de_numeros):<br \/><span style=\"color: #7e8c8d;\"># Procesa la lista de n\u00fameros sum\u00e1ndolos<\/span><br \/>return sum(lista_de_numeros)<\/div>\n<h3 id=\"deberia-haber-una-sola-manera-de-hacerlo\">Deber\u00eda haber una sola manera de hacerlo<\/h3>\n<p>Para cualquier tarea, deber\u00eda haber una manera clara y preferida de hacerlo.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Manera alternativa<\/span><\/p>\n<p>a = len([1, 2, 3])<br \/>b = [1, 2, 3].__len__()<\/p>\n<p><span style=\"color: #7e8c8d;\"># Una manera obvia<\/span><\/p>\n<p>a = len([1, 2, 3])<\/p><\/div>\n<h3 id=\"aunque-esa-manera-puede-no-parecer-obvia-al-principio\">Aunque esa manera puede no parecer obvia al principio<\/h3>\n<p>Algunas soluciones pueden no ser evidentes para todos, pero siguen siendo las preferidas.<\/p>\n<h3 id=\"ahora-es-mejor-que-nunca\">Ahora es mejor que nunca<\/h3>\n<p>Es mejor hacer algo ahora que posponerlo indefinidamente.<\/p>\n<h3 id=\"aunque-es-mejor-no-ir-con-prisas\">Aunque es mejor no ir con prisas<\/h3>\n<p>A veces es mejor no hacer algo apresuradamente, pues podr\u00edamos meternos en un embrollo todav\u00eda m\u00e1s profundo.<\/p>\n<h3 id=\"si-es-dificil-de-explicar-es-mala-idea\">Si es dif\u00edcil de explicar, es mala idea<\/h3>\n<p>Si no puedes explicar f\u00e1cilmente c\u00f3mo funciona tu c\u00f3digo, probablemente sea una mala soluci\u00f3n.<\/p>\n<h3 id=\"si-es-facil-de-explicar-puede-que-si-sea-buena-idea\">Si es f\u00e1cil de explicar, puede que s\u00ed sea buena idea<\/h3>\n<p>Si puedes explicar claramente tu c\u00f3digo, es probable que sea una buena soluci\u00f3n (\u00a1pero no siempre!).<\/p>\n<h3 id=\"los-namespaces-son-una-gran-idea\">Los namespaces son una gran idea<\/h3>\n<p>Usa namespaces para organizar mejor todo el c\u00f3digo y estructurarlo con claridad.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\"><span style=\"color: #7e8c8d;\"># Sin espacio de nombres<\/span><\/p>\n<p>valor = 1<\/p>\n<p><span style=\"color: #7e8c8d;\"># Con espacio de nombres<\/span><\/p>\n<p>class MiClase:<br \/>valor = 1<\/div>\n<h3 id=\"cual-es-el-principio-20-del-zen-de-python\">\u00bfCu\u00e1l es el principio 20 del Zen de Python?<\/h3>\n<p>Nadie sabe cu\u00e1l es el vig\u00e9simo principio del Zen de Python, puesto que nadie lo ha escrito todav\u00eda. Si bien se dice que son 20 principios, solo se conocen 19. El \u00faltimo, escr\u00edbelo t\u00fa.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El Zen de Python (tambi\u00e9n llamado PEP 20) son un conjunto de principios breves y sencillos que definen el dise\u00f1o [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":781,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3214","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar"],"acf":[],"_links":{"self":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts\/3214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/comments?post=3214"}],"version-history":[{"count":0,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts\/3214\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/media\/781"}],"wp:attachment":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/media?parent=3214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/categories?post=3214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/tags?post=3214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}