Python
Qué es Python?
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Filosofía
- Bello es mejor que feo.
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Disperso es mejor que denso.
- La legibilidad cuenta.
- Los casos especiales no son tan especiales como para quebrantar las reglas.
- Aunque lo práctico gana a la pureza.
- Los errores nunca deberían dejarse pasar silenciosamente.
- A menos que hayan sido silenciados explícitamente.
FILOSOFÍA (cont.)
-
Frente a la ambigüedad, rechaza la tentación de adivinar.
- Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.
- Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.
- Ahora es mejor que nunca.
- Aunque nunca es a menudo mejor que ya mismo.
- Si la implementación es difícil de explicar, es una mala idea.
- Si la implementación es fácil de explicar, puede que sea una buena idea.
- Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!
Por qué python?
Python se ha convertido en el principal lenguaje de programación introductorio en EEUU
POR QUÉ PYTHON?
-
Una gran experiencia desde el día 1
-
La habilidad de programar aplicaciones web
-
La habilidad de programar aplicaciones de escritorio, tanto en windows, como linux y mac
-
Profesionales mejor pagos ($10-$15/hora en PHP vs $20-$40)
-
Comunidad abierta y que se apoya entre sí
Sitios que utilizan Python
Youtube | ||
Yahoo Maps |
Yahoo Groups |
Bing |
Yelp | Dropbox | |
Disqus | Bitbucket | |
New York Times | Washington Post | |
The Guardian | Nasa | National Geographic |
Primera experiencia
Ejemplo
http://www.skulpt.org/
http://www.pythontutor.com
Introducción
Python es un lenguaje interpretado, dinámico. El código fuente no declara los tipos de variables o parámetros o métodos. Esto hace que el código de manera corta y flexible, y te deshaces de la verificación en tiempo de compilación en el código fuente. Python hace un seguimiento de los tipos de todos los valores en tiempo de ejecución y marca el código que no tiene sentido mientras corre.
INTRODUCCIÓN
Una forma de probar código es ejecutar el intérprete y escribir código directamente en él, desde la consola:
$ python
Introducción
Escribir como ejemplo:
>>> a = 6 ## establecer una variable en esta sesion del interprete
>>> a ## Ingresar una expresion imprime su valor
>>> a + 2
>>> a = 'hola' ## a puede contener una cadena tambien
>>> a
>>> len(a) ## llama a la funcion len() en una cadena
>>> foo(a) ## intenta algo que no funciona
Teclea CTRL-d para salir (CTRL-z en la terminal de Windows/DOS)
Programa hecho en Python
Los archivos de código fuente de Python utilizan la extensión ".py"
Por ejemplo: Con un programa de Python en el archivo hola.py, la forma más fácil de ejecutarlo es con el comando de shell
$ python hola.py Alicia
Cargando y ejecutando el código en hello.py, pasándole el argumento de línea de comando "Alicia".
PROGRAMA HECHO EN PYTHON
#!/usr/bin/python
# -*- coding: utf-8 -*-
# importar modulos utilizados aqui -- sys es uno muy estandar
import sys
# Colocamos nuestro codigo en una funcion main()
def main():
print 'Hola ', sys.argv[1]
# Los argumentos de la linea de comandos estan en
# sys.argv[1], sys.argv[2] ...
# sys.argv[0] es el nombre del script mismo y puede ser ignorado
# Codigo estandar para llamar a la funcion main() para arrancar
# el programa.
if __name__ == '__main__':
main()
Ejecutarlo con
$ python hello.py Guido
Módulo de Python
-
Las líneas externas corren una sola vez.
-
Estas declaraciones van de arriba a abajo la primera vez que se importa el módulo en alguna parte, estableciendo sus variables y funciones.
-
Un módulo de Python se puede ejecutar directamente (como el anterior "python hola.py Bob") o puede ser importado y
-
utilizado por otro módulo.
- Cuando un archivo de Python se ejecuta directamente, la variable especial "__name__" es establecida a "__main__".
- Por lo tanto, es común tener por defecto el if __name__ ==... para llamar a una función main () cuando el módulo se ejecuta directamente, pero no cuando se importa el módulo por otro módulo.
Funciones
Las funciones en Python se definen así:
# Define una funcion "repetir" que toma 2 argumentos. def repetir(s, exclamar): """Retorna la cadena s repetida 3 veces. Si exclamar es true, agrega signos de explamacion. """ result = s + s + s # tambien se puede utilizar "s * 3",
# el que es mas rapido (Por que?) if exclamar: result = result + '!!!' return result
print repetir("ja", True)
Sangría (o Indentación)
-
En Python los espacios en blanco de una pieza de código afecta a su significado.
-
En un bloque lógico de declaraciones deben tener todas la misma sangría, establecido en forma de sangrado de su función padre, o "if" o lo que sea.
-
Si una de las líneas en un grupo tiene una sangría diferente, es marcado como un error de sintaxis.
- Evite el uso de TAB.
-
Establezca su editor para insertar espacios en lugar de tabuladores.
-
De acuerdo PEP 8, debe ser una indentación con 4 espacios. (Dato curioso: la guía de estilo interna de Google dicta un indentando con 2 espacios)
El código se comprueba en tiempo de ejecución
Python hace muy poco control en tiempo de compilación, aplazando casi todas las verificaciones de cada línea hasta que se ejecute esa línea.
def main():
if name == 'Guido':
print repeeeetir(name) + '!!!'
else:
print repetir(name)
Si el argumento enviado es "Guido", da error, sino anda bien.
Nombres de variables
-
Como las variables de Python no tienen ningún tipo especificado en el código fuente, dar nombres significativos a las variables para acordarse de lo que está pasando.
-
Así que utilice "nombre" si se trata de un solo nombre, y "nombres" si se trata de una lista de nombres, y "tuplas" si es una lista de tuplas.
-
Muchos errores básicos de Python resultan de olvidar qué tipo de valor está en cada variable, así que utiliza nombres significativos de variables (todo lo que utilices en realidad) para ayudar a mantener las cosas en orden.
Módulos e Importaciones
-
Un archivo de código Python se llama módulo
-
El archivo binky.py es también conocido como el módulo binky
-
Un módulo contiene esencialmente la definición de variables como, "x = 6" y "def foo ()"
-
Supongamos que el archivo "binky.py" contiene un "def foo ()". El nombre completo de esa función foo es "binky.foo".
-
De esta manera, varios módulos de Python pueden nombrar sus funciones y variables como quieran, y los nombres de las variables no entran en conflicto: module1.foo es diferente de module2.foo
MÓDULOS E IMPORTACIONES
-
Por ejemplo, tenemos el módulo estándar "sys" que contiene algunas facilidades estándar del sistema, como la lista argv, y la función exit().
-
Con la declaración "import sys", puedes tener acceso a las definiciones en el módulo sys y ponerlas a tu disposición a través de su nombre completo, por ejemplo, sys.exit().
import sys
# ahora podemos referirnos a las facilidades de sys.xxx
sys.exit(0)
Eso hace argv y exit() disponibles por sus nombres cortos
Se recomienda la forma original con los nombres totalmente calificados
MÓDULOS E IMPORTACIONES
Hay muchos módulos y paquetes que se incluyen con la instalación estándar del intérprete de Python, por ejemplo:
-
sys - Acceso a exit(), argv, stdin, stdout, ...
-
re - expresiones regulares
-
os - interfaz del sistema operativo, el sistema de archivos
Puede encontrar la documentación de todos los módulos de la biblioteca estándar y paquetes de http://docs.python.org/library.
Ayuda en línea y dir
-
Google
-
docs.python.org
-
StackOverflow
-
Funciones help () [y dir()]
help y dir
-
Colocando algo como help(len) en la consola de python obtendremos la ayuda de la función len
-
dir(sys) nos devuelve una lista rápida de los símbolos de sys
Material de lectura extra
Python
By Guillermo Nuñez
Python
- 2,454