Metadata: Estos notebooks están (más que) inspirados en el excelente trabajo de Jake van der Plass y su Whirlwind Tour Of Python. Ver A Whirlwind Tour of Python by Jake VanderPlas (O’Reilly). Copyright 2016 O’Reilly Media, Inc., 978-1-491-96465-1.". Estos notebooks están protegidos con la misma licencia de los originales, Creative Commons 0. Todas las notas están disponibles en PrograUDD1.

Corriendo código en Python

  • Python es un lenguaje super flexible.
  • Es interpretado, no compilado (ejecutado línea por línea, haciendolo interactivo (no es posible con C, o Fortran)

Esta sección describe cuatro maneras de correr código Python: el interprete, ipython, scripts y Jupyter notebooks.

El interprete de Python

  • Forma más básica de ejecutar Python (línea a línea)
  • Viene con el lenguaje cuando se instala
  • executar python en la terminal de OSX, en la consola de Linux o en el "command prompt" o cmd.exe de (bleargh) Windows.

De paso vean el siguiente ejemplo:

Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul  2 2016, 17:53:06) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Mientras el interprete esté cierriendo, se pueden ejecutar códigos pequeños, por ejemplo, usarlo como calculadora, o compu de los 80s (yes, I know, I'm old)

>>> 1 + 1
2
>>> x = 5
>>> x * 3
15

Noten el "markup" que hago: esto se llama "markdown" y nos es últil para escribir documentación (y páginas web... ESCRITAS EN PYTHON! :) vean jekyll.

IPython

Van a ver que si tienen que hacer cosas sofisticadas, el intérprete de Python es un poco limitado. Hay una alternativa, ipython (iinteractive Python) que viene con Anaconda, y que incluye un montón de mejoras al interprete. En anaconda, pueden ejecutar IPython usando el comando ipython o jupyter console (la verdad no sé si hay diferencias, siempre uso jupyter console, but meh. Si encuentran alguna diferencia, me avisan. (BTW, aqui hay muchos rescursos más sobre Python)

$ ipython
Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul  2 2016, 17:53:06) 
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: 1 + 1
Out[1]: 2

In [2]: x = 5

In [3]: x * 3
Out[3]: 15

"Scripts" de Python

  • correr línea a línea es bueno para explorar datos, pero no tan bueno para algoritmos que son más complejos. Para eso usamos scripts.
  • Guardamos un montón de líneas de código en un archivo, y lo dejamos ejecutando (a veces por mucho rato)
  • los scripts, por convención, se guardan en archivo .py.
# file: test.py
print("Running test.py")
x = 5
print("Result is", 3 * x)

y para ejecutarlo (si sé... pero así se dice, "ejecutar"), vamos a la carpeta que contiene el archivo y decimos el siguiente "encanto":

$ python test.py
Running test.py
Result is 15

Para programas más complicados, no podemos evitar hacer esta clase de scripts.

El Jupyter notebook

  • un formato especial de documentación que permite ejecutar codigo, ver gráficos, etc.
  • Hibrido entre script/interactivo
  • ya no solamente Python, sino también otros lenguajes
  • los notebooks son un entorno de desarrollo, pero también una forma de comunicar y compartir trabajo a través de "narrativas" computacionales y de datos que mezclan código, figuras, datos, y texto.

Estas clases están en notebooks.

Talleres y la próxima clase

  1. Install-fest en los talleres! (yo voy a estar ahí también)
  2. Todos tienen que correr "hello, world" en las 4 formas diferentes (para la próxima clase)
  3. Todos los que tengan ganas, traigan computadoras
  4. No digan los fabulosos chistes que hago a la clase siguiente :) (después durante la semana se pueden regocijar y compartirlos y disfrutarlos entre todos...)
  5. Los que quieran y sean de esa inclinación, pueden "friend" me en Twitter y FB. Yo uso esas cuentas para trabajo, no son (muy) personales, y comunico cosas de CompSci, asi que si están interesados, friend me up! (en FB acepto todas los requests, en Twitter no.)
    1. @leoferres (twitter)
    2. en FB me tienen que buscar