¿Que es el PEP 8 y porque debería implementarlo?
Tags: python, spanish
Published: 2019-04-14 05:28:23

---
title: ¿Que es el PEP 8 y porque debería implementarlo?
published: true
description: 
tags: python, spanish
---

Originalmente publicado en [pythonist.dev](https://pythonist.dev/articles/porque-usar-pep8-python/)

En el mundo del desarrollo es muy común conseguir distintas formas de hacer las cosas, puedes organizar el código como quieras, incluso escribirlo de forma abstracta, esto en muchos casos logra que nuestra profesión sea considerada muchas veces un arte y no una ingeniería, debido a la ausencia de una base solida de como y porque se deben hacer las cosas de una manera en especifico, por lo que es común que conseguimos software mal redactado y mal organizado que al final nadie quiere leer. 

La diferencia mas tangible de python con otros lenguajes es que la comunidad tiene como emblema la legibilidad del código, el ZEN de python establece que **"Debe haber una y preferiblemente solo una forma obvia de hacer las cosas"**, por lo que siguiendo este principio, se definio una guiá de estilo única descrita íntegramente en el Python Enhancement Proposal numero 8, abreviado como PEP 8. En esta se define al pie de la letra, como debería estar escrito nuestro código python.

Muchos sabemos que al común denominador de los desarrolladores de software no suele gustarle la obligación impuesta de una forma de hacer su trabajo, con el pasar del tiempo apreciamos que toda la comunidad use una guiá de estilo única, ya que al final del camino nos facilita nuestro trabajo, mejorando mucho nuestra productividad.

##Puntos mas importantes del PEP8


###**Basicos:**
* Siempre preferir espacios en ves de tabs.
* Usar 4 espacios en la indentación.
* Las lineas deben tener menos de 80 caracteres.
* Las lineas que pasen de esta longitud deben ser divididas en dos lineas, y la linea resultante de la división debe estar indentada.
* En una fila, las funciones y las clases deben estar separadas por dos lineas en blanco.
* No colocar espacios alrededor de indices de lista, llamadas de funciones o argumentos.

###**Nombres**
* Las funciones deben estar declaradas en minúscula y las palabras separadas por guiones bajos `def funcion_cool()`
* Los metodos privados de una clase deben comenzar con doble guion bajo `def __private_method()`.
* Los métodos protegidos de una clase deben comenzar con guion bajo `def _protected_method()`.
* Las clases y excepciones deben ser capitalizadas por palabra `class SuperClass`.
* Constantes del module deben estar en mayusculas separadas por guiones bajos `NUMERO_MAXIMO = 10`.
* Los métodos de instancia de una clase deben usar el parametro `self` como primer parámetro.
* Los métodos de clase deben usar cls como primer parámetro, para referirse a la misma clase.

###**Expresiones**
* Usar negación en linea (`if a is not b`) en vez de negar una expresion positiva `(if not a is b)`.
* No validar valores vacíos usando len `if (len(lista) == 0)`, usar `if not lista`.
* Siempre coloca los `imports` al inicio del archivo.
* Siempre importa funciones y clases usando `from my_module import MyClass` en ves de importar el modulo completo `import my_module`
* Si aun debes usar imports relativos, usa la sintaxis `from . import my_module`
* Las importaciones siempre deben estar en el orden:

1. Módulos de la librería standar.
2. Módulos externos.
3. Módulos del proyecto.

Y cada sección debe estar en orden alfabético.

Siguiendo estos sencillos puntos, tu equipo de desarrollo y toda la comunidad python estará muy alegre de tenerte.