Python
Conociendo
Andrés Chávez Ulfe




¿Por qué Python?
P: ¿Qué problema intenta resolver?
R: La productividad del programador
Mi observación en ese momento era que las computadoras se volvían más rápidas y baratas a un ritmo increíble (...) [Pero] el costo de los programadores para programarlas se mantenía bajo. (Guido van Rossum, 2008)


Python es:


Extenso
Python se puede utilizar en diferentes campos, como:
Desarrollo Web
Administración de Sistemas
Desarrollo de Videojuegos
Modelamiento 3D
Testing
Análisis de información


Legibible
Basta con echar un vistazo
from package import attribute_method
def saludo(name=None):
if name is not None:
print "Hola Ica! soy " + name
else:
print "Hola Ica!"
saludo("Andres")


Fácil de aprender
- Su sintaxis es muy sencilla y parecida al Inglés
- No utiliza estructuras o símbolos extraños
- Existen muchos recursos en internet
- Cuenta con una comunidad muy grande


Gratis
Python es de código abierto y libre.
Esto significa que usted puede obtener el código fuente cambiarlo como sea necesario
y redistribuirlo.
La gente puede encontrar errores y corregirlos más rápido.


Multipropósito
Puedes usar Python en:
- Aplicaciones web
- Aplicaciones de escritorio
- Aplicaciones móbiles
- Sistemas embebidos
- Electrónica
- Robótica
- etc


Multiplataforma
Python es soportado actualmente en:
- GNU/Linux
- MS Windows
- Mac OSX
- Android
- iOS
- Solaris
- etc


Interpretado
Compilación ...



Fácil de mantener
como la filosofía!
El Zen de Python
(Tim Peters, 2004)
Python 2.7.10 (default, Aug 22 2015, 20:33:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import this


Fácil de mantener
como la filosofía!
Hermoso 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.
Escaso es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son lo suficientemente especiales como para romper las reglas.
Lo práctico supera a la pureza.
Los errores nunca deben pasar en silencio.
A menos que sean silenciados.
Ante 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 seas holandés.
Ahora es mejor que nunca.
Aunque "nunca" es a menudo mejor que "ahora mismo".
Si la aplicación es difícil de explicar, es una mala idea.
Si la aplicación es fácil de explicar, puede ser una buena idea.
Los Namespaces son una gran idea ¡hay a hacer más de esos!
PEP 0008 - Guía de estilo para el código de Python


Muchas librerías


¿Quién usa Python?







¿y tú?

Conociendo el código


Hola mundo
print 'Hola mundo'
Variables
# Comentarios
var_number = 10
var_decimal = 3.14
var_text = 'Hola mundo'
var_bool = True
Funciones
def suma(a, b):
return a + b


Clases
class Vehiculo(object):
pos_x = 0
pos_y = 0
def mover(self, x, y):
self.pos_x += x
self.pos_y += y
return self.pos_x, self.pos_y
carro = Vehiculo()
carro.mover(10, -5)
carro.mover(0, 5)
carro.mover(-10, 0)


Tipado Dinámico
>>> a = 'Hola mundo'
>>> type(a)
<type 'str'>
>>> a = 123
>>> type(a)
<type 'int'>
>>> b = '456'
>>> type(b)
<type 'str'>
>>> a + b
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Ordenamiento simple
a, b = 'uno', 'dos'
b, a = a, b


Cadenas de texto
>>> 'texto' + 'con' + 'texto'
'textocontexto'
>>> """texto
de multiples
lineas"""
'texto\n de multiples\n lineas'
Formato de cadenas
>>> u'Suma: %d %s %f %s %.2f' % (1, '+', 1.5, '=', 1+1)
u'Suma: 1 + 1.500000 = 2.00'


Listas y Tuplas
>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> lista = []
>>> lista.append('a')
>>> lista += [1]
lista
['a', 1]
>>> lista[0]
'a'
>>> 1 in lista
True
>>> lista.pop(1)
1
>>> 1 in lista
False
>>> (1,2,3) + (4,5,6)
(1, 2, 3, 4, 5, 6)
>>> tupla = ('a',)
>>> tupla.append(1)
AttributeError: 'tuple' object
has no attribute 'append'
>>> tupla += (1,)
>>> tupla
('a', 1)
>>> tupla = ('a', 1)
>>> tupla[0]
'a'
>>> 1 in tupla
True
>>> list(tupla)
['a', 1]


Diccionarios
>>> dict = {}
>>> color_dict = {'azul': '#0000FF', 'naranja': '#FFA500'}
>>> fruit_dict = {'manzana': 'apple', 'naranja': 'orange'}
>>> color_dict['azul']
'#0000FF'
>>> color_dict['naranja'] == fruit_dict['naranja']
False
>>> color_dict.keys()
['azul', 'naranja']
>>> color_dict.values()
['#0000FF', '#FFA500']
>>> color_dict.items()
[('azul', '#0000FF'), ('naranja', '#FFA500')]


Módulos
# funciones.py
def suma(a, b):
return a + b
def resta(a, b):
return a - b
def multiplicacion(a, b):
return a * b
def division(a, b):
return a / b
import funciones
funciones.suma(3, 4)
from funciones import suma
suma(3, 4)
from funciones import suma as mas
mas(3, 4)
from funciones import suma, resta
resta(4, 3)
from funciones import (suma,
division, multiplicacion)
import module


Python Web


Frameworks Python


Gracias
Dudas o consultas:
Slides:
Conociendo Python
By Andrés Chávez U.
Conociendo Python
- 1,117