Usar la shell de Python (REPL Python)
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'
Contenido
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 deptpython
. - 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.
- 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.