PyCharm es un entorno de desarrollo integrado o IDE, por sus siglas en inglés, desarollado por la compañía JetBrains, autora también del famosísimo IDE IntelliJ IDEA, para el lenguaje de programación Java.
PyCharm viene en dos versiones, una de pago y otra gratuita. A lo largo del curso utilizaremos la versión gratuita o community. Puedes descargarla desde la web, para los sistemas operativos Windows, OSX y Linux.
-
Lanza PyCharm y crea un nuevo proyecto. Llámalo
practicas-master-python
. -
Explora la carpeta creada con PyCharm con el explorador de archivos y comprueba qué la hace diferente a una carpeta creada por tu cuenta.
-
Usa la terminal para llegar hasta el proyecto de PyCharm y muestra todos sus elementos con
ls -a
. ¿Qué otras diferencias observas?
Las diferencia principal es la existencia de dos carpetas venv
y .idea
.
La primera es el entorno virtual del proyecto (hablaremos más sobre entornos
virtuales en el futuro). La segunda es la carpeta con las preferencias de
PyCharm. Esta carpeta comienza por un punto por lo que no será visible desde
el explorador de carpetas de Linux o Mac.
El editor es una herramienta fundamental para cualquier programador. Si bien un buen editor no hace al buen programador, desde luego, ¡ayuda! Durante el curso usaremos PyCharm y descubrirás nuevas funcionalidades conforme sean necesarias pero no es obligatorio. Utiliza el editor con el que te sientas más cómodo y, si nunca has usado uno, plantéate aprender este como una experiencia más.
-
Crea un nuevo fichero de Python y llámalo
fizzbuzz
. -
Pega el siguiente código en el fichero recién creado.
def fizzbuzz(up_to: int):
output = []
for number in range(1, up_to + 1):
representation = []
if number % 3 == 0:
representation.append('fizz')
if number % 5 == 0:
representation.append('buzz')
if not representation:
representation.append(str(number))
output.append(' '.join(representation))
print(', '.join(output))
if __name__ == '__main__':
fizzbuzz(100)
-
Observa los mensajes de advertencia del editor. ¿Qué indican? ¿Pudes corregirlos?
-
Renombra la variable
representation
arepresentation_tokens
. Mira en el menú secundario, entrada "Refactor". -
Observa la estructura del programa en la vista "Structure".
-
Por imitación, crea una nueva función
is_divisible
que encapsule la comprobación de divisibilidad en las condiciones de los dos primerosif
. No cambies nada aun, sólo crea la función. -
Haz clic sobre el nombre de la función y observa el icono de la bombilla. Haz clic sobre este y elige la opción "Specify return type using annotation". Escribe
bool
para el tipo de retorno. -
Vuelve a hacer clic sobre el nombre de la función y luego en la bombilla pero ahora selecciona "Insert documentation string stub". Documenta la función. Tienes un ejemplo a continuación:
"""
Comprueba la divisibilidad del primer parámetro entre el segundo.
:param number: el número sobre el que se quiere comprobar la divisibilidad.
:param divisor: el criterio de divisibilidad.
:return: True si el primer parámetro es múltiplo del segundo.
"""
-
Observa ahora la estructura del programa en la vista "Structure". ¿Cómo ha cambiado?
-
Utiliza la selección múltiple para reemplazar la condición de los dos primeros
if
por sendas llamadas ais_divisible
. Observa las ayudas a la edición que muestra PyCharm. -
Presiona la tecla "comando", en Mac, y situate sobre una de las llamadas a la función
is_divisible
para que esta se subraye y muestre un globo de ayuda con información sobre la función. Haz clic mientras el símbolo está en este estado subrayado para saltar a su definición.
Invierte tiempo en familiarizarte con PyCharm. A continuación encontrarás algunos recursos de utilidad.
- PyCharm Blog
- PyCharm Reference Card
- 9 reasons you should be using PyCharm
- What's new in PyCharm 2018.3
- Getting Started with PyCharm*
- Hidden features of PyCharm
Desde PyCharm puedes lanzar tus scripts creando perfiles de ejecución. Los perfiles aparecen en un desplegable, en la esquina superior derecha de la pantalla. Como no has ejecutado nada aun, debería aparecer en su lugar un botón con el texto "Add Configuration...".
-
Haz clic derecho sobre el editor y selecciona "Run 'fizzbuzz'". Utiliza el atajo de teclado la próxima vez.
-
Observa la salida en la consola de resultados. Puedes ejecutar el script de nuevo haciendo clic en el botón con la flecha verde situado a la izquierda de la consola de resultados.
-
También puedes ejecutar el script haciendo clic sobre la flecha verde situada en el margen del editor con los números de línea. Cuando te de a elegir entre los modos de ejecución, elige "Run 'fizzbuzz'".
-
Observa ahora el desplegable con los perfiles de ejecución. Debería aparecer uno con el nombre del script de Python "fizzbuzz".
-
Edita el perfil de ejecución haciendo clic sobre "Edit configurations...". Asegúrate de que el perfil seleccionado a la izquierda es "fizzbuzz" y accede a la sección "Execution". Aquí marca la casilla "Run with Python console" y haz clic en "Ok".
-
Lanza el script de nuevo. Espera un poco hasta que la consola se inicialice y observa lo que ocurre. Puedes terminar la sesión de consola haciendo clic sobre el cuadrado rojo que acompaña a la consola Python en su lado izquierdo.
-
Desmarca la casilla "Run with Python console" del perfil de ejecución.
Otros modos de ejecución son:
-
Pasar argumentos al script de Python
Pruébalo con el siguiente script:
import sys if __name__ == '__main__': print('Estos son los argumentos pasados al script:', sys.argv[1:])
-
Redirigir la entrada estándar para que lea de un fichero
Pruébalo con el siguiente script:
import sys if __name__ == '__main__': print('Este es el contenido de la entrada estándar:') for line in sys.stdin.readlines(): print(line)
Uno de los aspectos más importantes del desarrollo es la depuración y el seguimiento de los programas. El depurador integrado de PyCharm permite una depuración sencilla y su configuración se basa en los mismos perfiles de ejecución que creamos anteriormente.
-
Coloca un punto de interrupción haciendo clic en el margen del editor, justo a la derecha del número de línea. Haz clic derecho sobre el editor y selecciona "Debug 'fizzbuzz'". Espera un poco y verás como el programa se detiene en esta línea.
-
Observa el panel de depuración. A la izquierda aparece la pila de llamadas y a la derecha la lista de variables. Expande la categoría "Special variables" para ver un listado de las variables "mágicas" de Python. Estos son valores con un significado especial.
-
Los controles de la depuración se encuentran a la izquierda y en la parte superior del panel de depuración. El botón verde de la izquierda del panel, con forma de rectángulo y flecha, reanudará la ejecución. El programa solo se detendrá en un punto de interrupción (o breakpoint). Al no haber ninguno, el programa continuará hasta el final. Haz clic en este botón.
-
Vuelve a lanzar el depurador. Puedes hacerlo con el atajo de teclado o desde el icono del bicho (bug) en la esquina superior derecha.
-
En la botonera superior, localiza el icono con la flecha azul hacia abajo ("Step Into"), que avanzará la ejecución hasta la siguiente instrucción, profundizando en la función. Haz clic en este botón.
-
Observa cómo ha cambiado el listado de variables, mostrando ahora el parámetro de la función.
-
Avanza paso a paso con el botón con la flecha azul en ángulo ("Step Over") hasta alcanzar uno de los condicionales. Observa cómo se actualiza el listado de variables a cada paso y explora los valores.
-
Evalúa la condición del
if
sin ejecutar la línea con el icono con aspecto de calculadora ("Evaluate Expression"). Selecciona el condicional delif
, haz clic sobre el icono y, a continuación, en "Evaluate". Cierra la ventana cuando termines. -
Para ir a la siguiente instrucción sin entrar en una función, haremos clic en el botón "Step Over".
-
A veces conviene tener una expresión en observación. Por ejemplo, sería conveniente tener en observación
is_divisible(number, 3)
yis_divisible(number, 5)
. Para ello, haz clic en el icono con el+
("New Watch") y escribe la expresión que quieres evaluar. Repite el proceso, una vez por expresión. -
Ejecuta algunas vueltas del bucle y observa cómo se actualizan las variables conforme avanzas en el programa.
-
Interrumpe la ejecución del programa en cualquier momento, haciendo clic en el icono del cuadrado rojo ("Stop").
Familiarizarte con el depurador es importante porque usarás esta herramienta constantemente para investigar las causas de los funcionamientos erróneos de tus programas. Descubriremos más capacidades a lo largo del curso pero aquí tienes algunos recursos útiles: