Skip to content

Instantly share code, notes, and snippets.

@hchocobar
Last active September 24, 2025 08:11
Show Gist options
  • Select an option

  • Save hchocobar/91f9e33a0201f3f8d0eb468a00612cc2 to your computer and use it in GitHub Desktop.

Select an option

Save hchocobar/91f9e33a0201f3f8d0eb468a00612cc2 to your computer and use it in GitHub Desktop.
Python - PEP8: Style Guide for Python Code

PEPs - Python Enhancement Proposals

Del inglés Python Enhancement Proposal, su traducción al español sería: Propuestas de mejora de Python.

El propósito de las PEPs es ser los mecanismos primarios para:

  • proponer nuevas y mayores capacidades de Python
  • recoger la opinión de la comunidad sobre ese tema,
  • y documentar las decisiones de diseño que se han realizado en Python.

El listado completo de las PEPs puedes econtrarlo en el listado oficial de PEPs

Si estás dando tus primeos pasos en Python debes conocer y aplicar estas dos:

PEP8: Style Guide for Python Code

En Python la legibilidad es tan importante que existe una PEP para ello: la PEP8 https://www.python.org/dev/peps/pep-0008/

PEP8

A continuación, un resumen de algunos ejemplos (no todos):

PEP8: variables

Utilizar nombres descriptivos y en minúsculas. Para nombres compuestos, separar las palabras por guiones bajos (snake_case).

mi_variable = 12

element = '<tag></tag>'
response = requests.get('http://www.python.org')

Incorrectos:

miVariable = 12  # Incorrecto
mivariable = 12  # Incorrecto
mi-variable = 12  # Incorrecto

elem = '<tag></tag>'  # Incorrecto
resp = requests.get('http://www.python.org')

PEP8: constantes

Utilizar nombres descriptivos y en mayúsculas separando palabras por guiones bajos.

MI_CONSTANTE = 12

PEP8: clases

Utilizar PascalCase (CapWords o CapitalizedWords) y siempre con nombres descriptivos.

class TestClass:

PEP8: operadores

Siempre colocar un espacio en blanco, antes y después de un operador

monto_bruto = 175
tasa_interes = 12
monto_interes = monto_bruto * tasa_interes / 100
tasa_bonificacion = 5
importe_bonificacion = monto_bruto * tasa_bonificacion / 100
monto_neto = (monto_bruto - importe_bonificacion) + monto_interes

PEP8: comentarios

Los comentarios en la misma línea del código deben separarse con dos espacios en blanco. Luego del símbolo # debes agregar un solo espacio en blanco e iniciar con la primera letra en mayúscula.

first_name = 'Joe'  # Nombre
last_name = 'Doe'  # Apellido
age = 25  # Edad

PEP8: indentación

La indentación es muy importante en Python porque indica que las instrucciones forman parte de una misma estructura de control o bloque.

imagen

La indentación en Python debe ser de 4 (cuatro) espacios en blanco.

numero = 50
if numero < 100:
    print('Hola')
elif numero < 200:
    print('Chao')
else:
    print('Adiós')

user = ''
for char in 'john.smith@pythoninstitute.org':
    if char == '@':
        break
    user += char
print(user)  # Salida: 'john.smith'

Indentación de colecciones:

# Listas
ordinales = ['primero', 'segundo', 'tercero', 'cuarto', 'quinto', 
             'sexto', 'séptimo', 'octavo', 'noveno', 'décimo'] 


# Tuplas
dias = ('lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo')
meses = ('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 
         'julio', 'agosto', 'setiembre', 'octubre', 'noviembre', 'diciembre')


# Diccionarios
usuario = {'nombre': 'Jane Doe',
           'edad': 23,
           'curso': 'Curso de Python',
           'skills': {'programación': True,
                      'base_de_datos': False},
           'niveles': ['básico', 'intermedio']}

Indentación de parámetros de métodos o funciones

figure.update_layout(title='Selección del mejor K',
                     xaxis_title='Valor de K',
                     yaxis_title='Precisión promedio',
                     xaxis=dict(dtick=1),
                     template='plotly_white',
                     width=800,
                     height=500)

PEP8: Líneas en blanco

Las funciones y clases de nivel superior están separadas por dos líneas.

Las definiciones de métodos dentro de una clase están separadas por una sola línea en blanco.

Todo lo demás por una.

Se pueden usar líneas en blanco adicionales (con moderación) para separar grupos de funciones relacionadas. No utilice demasiadas líneas en blanco para separar segmentos lógicos en el código.

Siempre dejar una línea en blanco vacía al final de nuestros archivos .py

import so
import sys
from flask import Flask


def top_level_function1():
    pass


def top_level_function2():
    pass


class TestClass(object):
    
    def class_method1():
        pass

    def class_method2():
        pass


class TestClass2(object):
    
    def class2_method1():
        pass

    def class2_method2():
        pass

PEP20: The Zen of Python

El Zen de Python, escrito por Tim Peters en el año 2004, describe los principios rectores para el diseño de Python.

Puedes importarlo en tu código utlizando la siguiente instrucción.

import this

Transcribo a continuación su contenido para que puedas leerlo y luego aplicarlo.

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than right now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment