Introduccion Spyder
Introduccion Spyder
Introduccion Spyder
…
y elegimos la carpeta donde se ubicará nuestro proyecto.
Tened por costumbre no dejar espacios en blanco ni usar caracteres raros en los identificadores de los
directorios y archivos. Usad _ para simular los espacios en blanco. En este ejemplo, llamaremos a nuestro
proyecto P0_1.
Podemos observar cómo se abre en la interfaz de Spyder una ventana llamada Explorador de proyectos,
donde podemos ver nuestro recién creado proyecto, que tiene asociado su propio directorio.
La interfaz gráfica muestra por defecto en el editor un guion temp.py, que puede ser útil para probar de
forma rápida fragmentos de código. Sin embargo, los nombres de nuestros guiones deben ser también
autoexplicativos, que describan sucintamente lo que hace el código o que resulte fácil relacionarles con el
programa al que pertenecen.
En un curso introductorio como éste, muchos de nuestros programas van a constar de un único guion. En
estos casos es habitual llamar al guion main.py. Sin embargo, sugerimos para su fácil identificación
llamarles de forma similar al proyecto.
En el ejemplo anterior, si el proyecto de la práctica 3.6 tiene un único guion una opción sería p3_6.py. Si
el programa constase de varios guiones, el programa principal podría llamarse main_p3_6.py.
Clicando con el botón derecho sobre el icono de la carpeta del proyecto en la ventana del explorador de
proyectos se muestra un menú desplegable con diferentes opciones.
A partir de este momento, el directorio del proyecto se convierte en nuestro directorio de trabajo. Eso
significa que las rutas (paths) relativas a otros archivos tendrán a éste como raíz.
Terminal IPython: comandos mágicos
El terminal IPython no sólo sirve para introducir código Python sino que dispone de una serie de
utilidades específicas que se ejecutan a través de una serie de comandos mágicos. Estos comandos
mágicos no forman parte de un terminal estándar de Python. Los comandos mágicos son precedidos por
el símbolo %.
Para comprobar el contenido de nuestro directorio de trabajo ejecute el siguiente comando mágico en la
terminal IPython:
In [1]: %ls
Directorio de C:\Users\migtr\Fundamentos_de_Programacion\Practicas\P0_1
Podemos observar que, además de nuestro primer guion, Spyder crea dentro del directorio del proyecto
otro directorio que no debemos borrar, llamado .spyproject: contiene diferentes archivos de
configuración de los que, en principio, no tenemos que ocuparnos.
Podéis comprobar que el resultado sería el mismo si hubiésemos ejecutado la orden sin el símbolo %:
In [1]: ls
Esto es debido a que, por defecto, cada vez que se reinicia el núcleo, se activa automáticamente el también
comando mágico %automagic. Para distinguir los comandos mágicos de las funciones nativas de Python
usaremos % y sugerimos en estos pasos iniciales de aprendizaje desactivar automagic:
In [2]: automagic 0
Parameters
----------
base : float
Base del triángulo.
altura : float
Altura del triángulo.
Returns
-------
_ : float
El área del triángulo dado por la fórmula ``area = (base*altura)/2``
Example
-------
>>> area_triangulo(2, 5)
5
"""
return 0.5*base*altura
Este sencillo programa calcula el área de un triángulo. Para ello, solicita al usuario los valores de la base y
altura.
Para ejecutar el programa, clica en la barra de herramientas o pulsa el atajo de teclado F5.
En la terminal debería mostrase algo similar a lo siguiente:
In [1]: runfile('C:/Users/migtr/Fundamentos_de_Programacion/Practicas/P0_1/p0_1.py', wd
ir='C:/Users/migtr/Fundamentos_de_Programacion/Practicas/P0_1')
Base:
Nos informa de las rutas absolutas del guion que se está ejecutando (runfile) y del directorio de trabajo
(wdir). Si se eligen los valores 2 y 5 para los parámetros solicitados se mostrará lo siguiente:
Base: 2
Altura: 5
El área del triángulo de base 2.0 y altura 5.0 es 5.0.
In [2]:
Ejecución desde el terminal
Aunque ahora mismo puede no ser algo interesante, desde el terminal IPython podemos ejecutar nuestro
guion sin más que invocar:
Lo que sí es importante tener en cuenta es que, al ejecutar nuestro programa, el núcleo asociado al
terminal IPython mantiene un estado de las variables utilizadas. Así, podemos invocar a la función
area_triangulo() desde el terminal.
In [2]: area_triangulo(3, 4)
Out[2]: 6.0
Los espacios de nombres son muy importantes en cualquier lenguaje. Previenen que, dentro del mismo
contexto de ejecución de un programa por parte del núcleo, se produzcan colisiones debido a la utilización
simultánea del mismo nombre por parte de diferentes componentes.
Si en algún momento queremos borrar los nombres que hemos creado durante la sesión, podemos
reiniciar el espacio de nombres:
In [6]: %reset
Esta operación, al igual que otras muchas, puede llevarse a cabo navegando por los menús. En este caso, se
accede rápidamente pulsando el botón del terminal.
Inspeccionando un objeto
Con el comando nativo help() podemos invocar la ayuda disponible acerca de un objeto. Por ejemplo, si
ejecutamos help(print) obtenemos la siguiente información:
In [5]: help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Esto ocurrirá si hemos reiniciado el espacio de nombres: en este caso, el núcleo ya no tiene constancia de
este identificador.
Si volvemos a ejecutar nuestro guion entonces obtenemos:
In [3]: help(area_triangulo)
Help on function area_triangulo in module __main__:
area_triangulo(base, altura)
Calcula el área de un triángulo a partir de su base y altura.
Parameters
----------
base: float
Base del triángulo.
altura: float
Altura del triángulo.
Returns
-------
float
El área del triángulo dado por la fórmula ``area = (base*altura)/2``
Example
-------
>>> area_triangulo(2, 5)
5
Esta salida tan prolija se produce gracias a que hemos documentado la función area_triangulo(). La
cadena de documentación (docstring) es la primera cadena de caracteres, posiblemente multilínea,
inmediatamente debajo de la línea def area_triangulo(base, altura):. Está cadena multilínea aparece
delimitada por triples comillas, """.
Los docstrings utilizan lenguajes de marcado ligero y están pensados para la generación de
documentación de forma automática. El lenguaje utilizado aquí se llama reStructuredText (reST), con unos
estilos añadidos Numpydoc standard habituales en el mundillo de la computación científica. Con esta
herramienta podemos visualizar con una estética atractiva la documentación asociada a una variable en la
ventana de ayuda. Para ello, basta clicar en el editor sobre la variable deseada y pulsar Ctrl + I:
Este tipo de utilidades que ofrecen los IDE’s facilitan sobremanera el trabajo. Puedes probar esta utilidad
clicando en el editor sobre las funciones nativas print(), float() o input().
Vemos que el resultado es el correcto, a pesar del cambio realizado. La razón es que el núcleo aún tiene
en memoria la versión antigua de nuestro objeto. ¡El cambio en el editor no afecta al estado del núcleo!
Para sobrescribir (override) el objeto necesitamos bien:
1. Reejecutar el guion, pulsando F5 por ejemplo.
2. Seleccionar el código afectado por el cambio (en nuestro caso las líneas comprendidas entre def ...
y return ... y pulsar F9 o .
La posibilidad de ejecutar fragmentos del código desde el editor es una herramienta de gran ayuda cuando
trabajamos con programas complejos. De esta forma, solo tenemos que reejecutar la parte que estemos
desarrollando o depurando, reutilizando los objetos previamente generados, que permanecen en el estado
del núcleo.
No olvides volver a reescribir la función de forma correcta, salvando el cambio. Durante el curso
aprenderemos a utilizar funciones para testar nuestros objetos. Así, fallos tan groseros como el que hemos
provocado intencionadamente no pasarán desapercibidos.
Explorador de variables y herramientas de depuración
La ventana del explorador de variables permite inspeccionar los tipos y valores de los objetos e incluso
editar sus valores. Para ello, basta clicar dos veces sobre la fila de la variable.
Autocompletado de código
Dependiendo de la versión de Spyder se dispone de herramientas de autocompletado de código más o
menos eficientes:
• Todas las versiones: Pulsando la tecla del tabulador, Tab, cuando estamos escribiendo una variable
nos muestra una lista con todas las variables que comienzan por los caracteres que hayamos escrito.
Esta funcionalidad la tenemos tanto en el editor como en el terminal.
• A partir de la versión 4: Mediante la integración del complemento (plugin) de Kite, una herramienta
de autocompletado de código Python, en cuanto hemos escrito 3 caracteres, se despliega
automáticamente la lista. Esta funcionalidad sólo está disponible en el editor.
Si es el caso, podremos seleccionar el ítem de la lista.
Guía de estilo
Python es un lenguaje que por su diseño obliga a ciertas reglas de estilo. El sangrado obligatorio es un
claro ejemplo. Sin embargo, cada programador puede desarrollar sus propios hábitos de escritura de
código. Esto, por regla general, es un problema, ya que cuando leemos código ajeno nos cuesta más
interpretar el código al no ajustarse a lo que estamos acostumbrados a hacer con nuestros programas. Por
esta razón, muchas organizaciones imponen a sus empleados seguir unas guías de estilo más o menos
estrictas.
En esta línea, Python en su propuesta de mejora (Python Enhancement Proposal), PEP 8, documenta
una guía de estilo.
Esta guía PEP 8 será de obligado cumplimiento durante la asignatura.
Una de las ventajas de usar un IDE es la gran cantidad de utilidades con las que viene provisto. En concreto,
Spyder nos ayuda a cumplir la guía PEP 8 de forma muy sencilla.
Para ello, debe habilitarse la casilla correspondiente seleccionando en el menú:
Herramientas --> Preferencias --> Completado y análisis de código --> Estilo del código
Para ver a Spyder ejecutando dinámicamente el análisis de estilo PEP 8 sobrescribe las siguientes líneas
sobre las antiguas en el guion p0_1.py.
print('\nIntroduzca la base y altura de un triángulo para calcular su área.')
base=float(input("Base: "))
altura=float(input("Altura: "))
area=area_triangulo(base,altura)
Basta situarse con el puntero del ratón sobre el icono correspondiente para que aparezca un mensaje con
la causa del incumplimiento.
Bibliografía
Este tutorial es una adaptación al castellano del tutorial disponible en Spyder. Este tutorial fue creado por
Hans Fangohr, de la Universidad de Southampton.
El tutorial original puede verse en el siguiente enlace.
Nótese que, a la fecha de este documento, algunas de las descripciones del tutorial, incluido el del propio
Spyder, están desactualizadas.