Usar la shell de Python (REPL Python)

Python Shell REPL

Gracias al carácter interpretado de Python existen muchos REPL (read-eval-print-loop) disponibles. Los REPL son programas que están a la espera de que se les escriba comandos para ser ejecutados continuamente, de ahí el nombre de lectura-evaluación-impresión-bucle.

Se utilizan para lanzar sentencias Python para ser evaluadas rápidamente y es una de las herramientas más potentes que tiene el lenguaje. A continuación se muestran algunos REPL populares.

Para realizar este tutorial se puede utilizar cualquier REPL o cualquier IDE que soporte ejecución de código Python.

Cuando se quiere expresar que algún código debe de ejecutarse en un REPL de Python se muestran tres caracteres > (>>>):

>>> 2 + 4
6
>>> 'HellO'.lower()
'hello'

REPL por defecto de Python

Se ejecutan desde cualquier consola de comandos llamando a un intérprete de Python simplemente lanzando el comando python en cualquier terminal del sistema. (CMD en windows, Terminal en linux/mac).

$ python

En este REPL se pueden describir variables, funciones, clases o cualquier tipo de dato de Python. Se suele utilizar para ejecutar partes aisladas de un programa y como complemento a un IDE tradicional.

IPython

Es un REPL mucho más avanzado, y quizás el más utilizado después del oficial gracias a todas sus funcionalidades. Se puede instalar usando:

$ pip install ipython

Algunos comandos útiles de IPython son:

  • ?: permite acceder a la documentación de IPython.
  • Tab: permite activar el autocompletado.
  • objeto? o objeto??: permite saber información sobre la variable guardada en el objeto.
  • funciones mágicas: IPython tiene muchas funciones creadas para el REPL que son muy útiles como se puede ver a continuación:
    • %timeit: permite medir el tiempo en segundos que tarda una ejecución.
    • %save: permite guardar las líneas seleccionadas en un fichero externo.
    • %macro: permite definir macros de código a ser ejecutadas.
    • %colors: permite cambiar la combinación de colores utilizados.
    • %history: permite examinar el historial de comandos ejecutados.
    • %pastebin: permite publicar en pastebin que estará disponible por defecto 7 días.
    • %debug: permite añadir puntos de ruptura y depurar partes del código.
  • Comandos generales de shell: se pueden ejecutar comandos como curl o ping usando el prefijo !curl o !ping

Para más información sobre los comandos se puede consultar la documentación oficial o el ipython cookbook.

bpython

bpython es un REPL avanzado construido sobre ncurses, por lo que es un REPL orientado a ofrecer una buena experiencia visual.

Se puede instalar utilizando pip install bpython y entre muchas de sus características destacan:

  • Autocompletado: tanto de código como de sentencias introducidas anteriormente.
  • Reescritura de comandos previos: se pueden reescribir los comandos que se han ejecutado anteriormente usando Ctrl-R, es una característica muy útil cuando se ha declarado cierta lógica que se quiere reescribir.
  • Edición en editor: se puede salir rápidamente del REPL para definir alguna función o clase en un editor normal y será introducido de nuevo en el REPL al guardar.
  • Publicación en pastebin: permite guardar en pastebin de forma simple usando F8.
  • Impresión de documentación: permite ver la documentación tanto de parámetros como de funciones definidas.

ptpython

ptpython es un REPL que presenta funcionalidades avanzadas como:

  • Autocompletado: tiene un autocompletado de código y de argumentos de funciones.
  • Representación de objetos para pt: permite que se haga una representación especial para el REPL al definir el método __pt__repr__ de una clase.
  • Edición de multilínea: usando las flechas del teclado se puede cambiar líneas insertadas anteriormente.
  • Soporte de teclas de Vi y de Emacs: permite utilizar la configuración de edición rápida utilizada en vi y emacs para editar rápidamente el código.
  • Soporte de ratón: permite utilizar el ratón para navegar por el menu.
  • Soporte para comandos de ipython: si se instala ipython permite acceder a las funciones mágicas usando ptipython en vez de ptpython.
  • Integración del REPL en código: permite fácilmente integrar el REPL dentro de código python usando.
from ptpython.ipython.repl import embed
embed(globals(), locals())

Se puede instalar utilizando pip y la documentación oficial se encuentra aquí.

pip install ptpython

Opinión personal: bpython, junto con ipython son los que más uso en mi dia a dia, siendo una alternativa a tener en cuenta sobre el REPL que trae Python por defecto, el cual es de gran ayuda también.

Los comandos de navegación en REPL y shells

  • Ctrl-a y Ctrl-e: mueve el cursor hasta el inicio o el final de la línea.
  • Ctrl-b y Ctrl-f: mueve el cursor un carácter hacia adelante o hacia atrás.
  • Ctrl-d: elimina el siguiente carácter.
  • Ctrl-k y Ctrl-u: corta los caracteres desde el cursor hasta el final de la línea o hasta el inicio de la misma.
  • Ctrl-y: pega el código copiado anteriormente.
  • Ctrl-p y Ctrl-n: para acceder al anterior o al siguiente comando ejecutado.
  • Ctrl-r: permite buscar algún comando ejecutado anteriormente.
  • Ctrl-c y Ctrl-d: interrumpe la ejecución y sale del programa respectivamente.

Libros sobre IPython y shell recomendados

A continuación se muestra una colección de libros para ampliar tus conocimientos.

Libros recomendados para aprender Python

Estos son los libros que pueden ayudarte a aprender Python, aprender a programar, tipos de datos, algoritmia y mucho más.

Disponible en:

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Ver más

  • Responsable: Oscar Ramirez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento: No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a ionos (1&1) que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Publicar un comentario