Cómo formatear automáticamente su código Python con negro

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 funcione y se olvidan de formatear el código correctamente en el camino.

Si escribe un programa pequeño (con 1000 líneas de códigos) probablemente pueda salirse con la suya sin formatear su código.

Pero a medida que los programas se vuelven cada vez más complejos, se vuelven cada vez más difíciles de entender. En algún momento (alrededor de 15,000 líneas de código), se vuelve 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 que es importante formatear su código python

Legibilidad

Dar formato a su código le ayudará a leer su código de manera eficiente . Parece más organizado y, cuando alguien mire su código, obtendrá una buena impresión.

Le ayudará en sus entrevistas de codificación.

Cuando estás en una entrevista de codificación, en algún momento a los entrevistadores les importará si estás formateando tu código correctamente. Si olvida hacer ese formateo, podría perder sus perspectivas de trabajo, solo por su código mal formateado.

Apoyo de equipo

Dar formato a su código se vuelve más importante cuando trabaja en equipo . Es probable que varias personas trabajen en el mismo proyecto de software y sus compañeros de equipo deben entender el código que escriba. De lo contrario, se vuelve más difícil trabajar juntos.

Facilita la detección de errores

El código mal formateado puede hacer que sea realmente 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 verificar su código en busca de errores y guías de estilo.

Pylint es una herramienta que busca errores en Python. Intenta hacer cumplir un estándar de codificación y busca olores de código. También puede buscar ciertos errores de tipo, puede recomendar sugerencias sobre cómo se pueden refactorizar bloques particulares y puede ofrecerle detalles sobre la complejidad del código.

Flake8 es una biblioteca de Python que envuelve PyFlakes , pycodestyle y el script McCabe de Ned Batchelder . Es un gran juego de herramientas para comparar su base de código con el estilo de codificación (PEP8) , errores de programación como “biblioteca importada pero sin usar”, “nombre no definido” y código que no tiene sangría.

El problema es que estas herramientas solo informan los problemas que identifican en el código fuente y dejan la carga a los desarrolladores de Python para solucionarlos.

Pero, ¿y 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 al negro

Del proyecto README:

Al utilizar Black , acepta ceder el control sobre las minucias del formateo manual. A cambio, el negro le brinda velocidad, determinismo y libertad frente a las molestias del pycodestyle sobre el formato. Ahorrará tiempo y energía mental para asuntos más importantes.

Black puede reformatear todo el archivo en su lugar de acuerdo con el estilo del código Black. Ayuda a su cerebro a concentrarse en el problema que desea resolver y codificar soluciones, en lugar de distraerse con la estructura del código y las diferencias estilísticas menores.

Entonces veamos cómo usarlo.

Instalar negro

Black se puede instalar corriendo pip install black. Requiere Python 3.6.0+ para ejecutarse. Una vez que Black esté instalado, tendrá una nueva herramienta de línea de comandos llamada black disponible en su shell, ¡y estará listo para comenzar!

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

Ahora veremos en qué pueden ayudarnos las negras.

Dar formato a un solo archivo

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

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

Luego, puede abrir sample_code.py para ver el código de Python formateado:

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

Dar formato a varios archivos

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

Se han reformateado tres archivos de Python dentro de la carpeta llamada python_with_black.

Comprobación de formato de archivos

Si no desea que Black cambie su archivo, pero desea saber si Black cree que un archivo debe cambiarse, puede usar uno de los siguientes comandos:

black --check .: Esto verificará qué archivo (s) de Python se pueden formatear en la carpeta actual (pero en realidad no modifica los archivos de Python).

black --check --diff file_name.py : Esto muestra lo que se debe hacer en el archivo pero no modifica el archivo.

Cambiar el número de caracteres por línea

Tenga en cuenta que el negro tiene por defecto 88 caracteres para su longitud de línea, pero puede cambiarlo usando la opción “-l” o “- -line-length”.

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

Negro en el cuaderno Jupyter

Para los usuarios de portátiles Jupyter, aún puede formatear automáticamente su código Python con esta extensión simple llamada Jupyter Black. Esta extensión reformatea / embellece el código en la celda de código de un cuaderno con negro.

La extensión Jupyter Black proporciona

  • Un botón de 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 completas (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 //github.com/drillan/jupyter-black/archive/master.zip — user

Luego habilite la extensión ejecutando:

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

Ahora puede comenzar a formatear su código Python en cada celda del cuaderno.

Primero, seleccione la celda del cuaderno que desea formatear su código de Python y luego haga clic en el botón de extensión llamado Negro.

Luego haga clic en el botón Jupyter Black:

Integración del editor

Puede integrar Black con sus editores favoritos. Actualmente, Black admite PyCharm / IntelliJ IDEA, Wing IDE, Vim, Visual Studio Code, Sublime Text 3, Atom / Nuclide, Kakoune y Thonny. Siga las instrucciones aquí para integrar Black con su editor favorito.

Si desea obtener más información sobre Black, le recomiendo ver la charla PyCon 2019 de Łukasz Langa.

Si aprendió algo nuevo o disfrutó leyendo este artículo, compártalo para que otros puedan verlo. Hasta entonces, ¡nos vemos en el próximo post! También me pueden contactar en Twitter @Davis_McDavid.