Original article: How to Auto-Format Your Python Code with Black

Escribir código Python es una cosa y escribir el código en un buen formato es otra. Los programadores junior a menudo se centran en asegurarse de que su código está funcionando y olvidan formatearlo correctamente en el camino.

Si escribes un programa pequeño (con 1000 líneas de código) probablemente puedas escapar sin formatear tu código.

Pero a medida que los programas se vuelven más y más complejos, se vuelven más y más difíciles de entender. En algún momento (alrededor de 15.000 líneas de código), se hace más difícil entender el código que usted mismo escribió.

La diferencia entre trabajar con código bien formateado y trabajar con código mal formateado, es como la diferencia entre vivir en un palacio y vivir en una casa sucia.

Por qué es importante formatear su código Python

Legibilidad

Formatear tu código te ayudará a leer tu código de manera eficiente. Parecerá más organizado, y cuando alguien mire tu código obtendrá una buena impresión.

Te ayudará en tus entrevistas de codificación

Cuando estás en una entrevista de codificación, a veces a los entrevistadores les importará si estás formateando tu código correctamente. Si se olvida de hacer ese formateo, es posible que pierdas tus perspectivas de trabajo, sólo debido a tu código mal formateado.

Apoyo al equipo

Formatear tu código se vuelve más importante cuando trabajas en equipo. Varias personas probablemente estarán trabajando en el mismo proyecto de software y el código que escribes debe ser entendido por tus compañeros de equipo. De lo contrario, se hace más difícil trabajar juntos.

Hace que sea fácil detectar bugs

El código mal formateado puede hacer que sea muy difícil detectar errores o incluso trabajar en un programa. También es realmente horrible de ver. Es una ofensa para tus ojos.

Pylint y Flake8

La mayoría de los desarrolladores de Python disfrutan usando Pylint o Flake8 para revisar su código en busca de errores y guías de estilo.

Pylint es una herramienta que busca errores en Python. Trata de hacer cumplir una norma de codificación y busca posibles errores en código. También puede buscar ciertos errores de tipo, puede recomendar sugerencias sobre cómo refactorizar determinados bloques y puede ofrecer detalles sobre la complejidad del código.

Flake8 es una librería Python que incluye PyFlakes, Pycodestyle y Ned Batchelder’s McCabe script. Es un gran kit de herramientas para comprobar su código base contra el estilo de codificación (PEP8), errores de programación como “library imported but unused”, “Undefined name” y código que no está indentado.

¡El problema es que estas herramientas sólo reportan los problemas que identifican en el código fuente y dejan la carga a los desarrolladores de Python para arreglarlo!

Pero, qué pasaría si tuviéramos una herramienta que pudiera identificar y resolver el problema al mismo tiempo. Black es una herramienta que le permite identificar errores y formatear su código Python al mismo tiempo. Por lo tanto, te hace más productivo.

Introducción a Black

1_bxzXidSUpkEaj7j0rC5ygg

README del proyecto:

Al utilizar Black, usted acepta ceder el control sobre los detalles minuciosos del formato manual. A cambio, Black te da velocidad, determinismo y libertad de las quejas de Pycodestyle sobre el formateo. Ahorrarás tiempo y energía mental para asuntos más importantes.

Black puede reformatear todo el archivo en su lugar de acuerdo con el estilo de código Black. Ayuda a que tu cerebro se centre en el problema que quieres resolver y en soluciones de código, en lugar de distraerte con la estructura del código y pequeñas diferencias de estilo.

Así que vamos a ver cómo usarlo.

Instalar Black

Black se puede instalar ejecutando pip install black. Requiere Python 3.6.2 o + para ejecutarse. Una vez que Black esté instalado, tendrás una nueva herramienta de línea de comandos llamada black disponible en tu shell, y estás listo para empezar.

Para empezar de inmediato con valores predeterminados sensibles, elija el archivo Python que desea formatear y luego escriba black filename.py en la terminal. Entonces Black formateará su archivo Python.

Ahora veremos lo que Black puede ayudarnos a hacer.

Formatear un único archivo

Veamos este sencillo ejemplo: aquí están mis dos funciones Python en mi archivo Python llamado sample_code.py.

1_OKkCLUmuspv8IHiU25NVTw
sample_code.py

Puede utilizar black sample_code.py en el terminal para cambiar el formato. Después de ejecutar Black, verá la siguiente salida:

d

Después, puede abrir sample_code.py para ver el código Python formateado:

e

El código Python ahora está formateado y es más legible.

Formatear múltiples archivos

Para formatear más de un archivo Python, escribir black folder_name/ en la terminal.

1*VLyk0_7wCnKFOEYPRBpABg
f
Formatear todos los archivos Python dentro de la carpeta

Tres archivos Python dentro de la carpeta llamada python_with_black han sido reformateados.

Comprobando archivos para formatear

Si no quieres que Black cambie tu archivo, pero quieres saber si Black piensa que un archivo debe ser cambiado, puedes usar uno de los siguientes comandos:

black --check .: Esto comprobará qué archivos Python pueden formatearse en la carpeta actual (pero en realidad no modifica el archivo Python).

g
Comprueba los archivos para formatear

black --check --diff file_name.py : Esto muestra lo que hay que hacer con el archivo, pero no lo modifica.

h
Comprobar diff, después formatear

Cambiar número de caracteres por línea

Tenga en cuenta que el valor predeterminado de Black es de 88 caracteres para su longitud de línea, pero puede cambiarlo utilizando la opción “-l” o “- -line-length”.

Por ejemplo, cambiar a 60 caracteres: black -l 60 python_file.py.

Black en Jupyter Notebook

Para los usuarios de Jupyter notebook, todavía pueden formatear automáticamente su código Python con esta sencilla extensión llamada Jupyter Black. Esta extensión reformatea/embellece el código en la celda de código de un cuaderno por black.

La extensión Jupyter Black proporciona

  • Un botón en la barra de herramientas.
  • Un atajo de teclado para reformatear la celda de código actual (predeterminado: Ctrl-B).
  • Un atajo de teclado para reformatear celdas de código enteras (predeterminado: Ctrl-Shift-B).

Instalar Jupyter Black

Primero asegúrese de haber instalado jupyter-contrib-nbextensions y Black, luego ejecute los siguientes comandos.

jupyter nbextension install https://github.com/drillan/jupyter-black/archive/master.zip — user

A continuación, habilite la extensión ejecutando:

jupyter nbextension enable jupyter-black-master/jupyter-black

Ahora puedes empezar a formatear tu código Python en cada celda de tu cuaderno.

En primer lugar, seleccione la celda del cuaderno que desea formatear su código Python y haga clic en el botón de extensión llamado Black.

i
Antes de usar Jupyter Black

A continuación, haga clic en el botón Jupyter Black:

j
Botón Jupyter Black
k
Después de usar Jupyter Black

Integrar Editor

Puedes integrar Black con tus editores favoritos. Actualmente, Black soporta Emacs, PyCharm/IntelliJ IDEA, Wing IDE, Vim, Gedit, Visual Studio Code, Sublime Text 3, Python LSP Server, Atom/Nuclide, Gradle (the build tool), Kakoune y Thonny. Siga las instrucciones aquí para integrar Black con su editor favorito.

Si quieres aprender más sobre Black, te recomiendo ver la charla PyCon 2019 de Łukasz Langa.

Si aprendiste algo nuevo o te gustó leer este artículo, por favor compártelo para que otros lo vean. Hasta entonces, nos vemos en el próximo post. También me pueden contactar en Twitter @Davis_McDavid.