4.1 Python PDF
4.1 Python PDF
Introducción
• Su nombre es por los Monty Python (creado en los 90)
• Tipado dinámico
• Fuertemente tipado
• Multiplataforma
• Orientado a objetos
¿Quienes lo usan?
¿Quienes lo usan?
• Gigantes de Internet: Google, Yahoo!, Instagram
https://wiki.python.org/moin/OrganizationsUsingPython
Python 3
La increíble pero triste historia
Python 3: la increíble
pero triste historia
• En 2009 se lanza Python 3 estando en la 2.6
http://docs.python.org/3.1/whatsnew/3.0.html
PyCharm
Nuestro IDE de desarrollo
http://www.jetbrains.com/pycharm/download/
Tipos básicos
Tipos básicos
• Números enteros: 77
• Números complejos: 7 + 5j
entero_long = 77L
octal = 077
hexadecimal = 0x77
coma_flotante = 3.1416
Variables
numero_complejo = 7 + 5j
verdadero = True
falso = False
quijote = “““
En un lugar de la Mancha, de cuyo nombre no quiero
acordarme , no ha mucho tiempo que vivía un hidalgo
3
apple = fruits[0]
orange = fruits[1]
watermelon = fruits[2]
Listas
apple = fruits[-3]
orange = fruits[-2]
watermelon = fruits[-1]
Listas
things[1] = 22
things[3][1] = 3.1416
Slicing de listas
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
from_2_to_6 = numbers[2:7]
greater_than_4 = numbers[5:]
less_than_4 = numbers[:4]
fighters.append(something)
fighters.append(“Goku”)
fighters.count(something)
fighters.count(“Chuck”) # devuelve 1
fighters.count(“Alberto”) # devuelve 0
Operaciones con listas
fighters.extend(iterable)
fighters.extend([‘Goku’, ‘Mike’])
fighters.index(‘Chuck’) # devuelve 1
fighters.insert(index, something)
fighters.pop([index])
fighters.remove(value)
fighters.remove('Chuck')
fighters.reverse()
fighters.reverse()
fighters.sort()
me[“country”] = “USA”
Operaciones con
diccionarios
fighter.get(key [, d])
fighter.get(“wins”, 0) # devuelve 0
Operaciones con
diccionarios
fighter.has_key(key)
fighter.items(key)
fighter.items()
# devuelve
fighter.keys()
fighter.values()
fighter.pop(key [, d])
fighter.pop(“country”) # ‘Italy'
fighter.pop(“wins”, 0) # 0
Operadores
Operadores aritméticos
res = 2 + 3
Suma a+b
# r es 5
res = 2 - 3
Resta a-b
# r es -1
res = 2 * 3
Multiplicación a*b
# r es 6
res = 2 / 3
División a/b
# r es 0.66
Operadores aritméticos
res = 2 ** 3
Exponente a ** b
# res es 8
res = 2 // 3
Divisón entera a // b
# res es 0
res = 2 % 3
Módulo a%b
# res es 2
res = -5
Negación -a
# res es -5
Operadores booleanos
res = True and False
¿se cumple a y b? a and b
# res es False
res = 5 == 5
¿a igual a b? a == b
# res es True
res = 5 != 5
¿a distinto a b? a != b
# res es False
Operadores booleanos
res = 5 < 5
¿a menor que b? a<b
# res es False
res = 6 > 5
¿a mayor que b? a>b
# res es True
food = “monja” * 3
Multiplicación “Michael” * 5 # food es
“monjamonjamonja”
Operadores a nivel de bit
bits = 3 & 2
and &
# bits es 2
bits = 3 | 2
or |
# bits es 3
bits = 3 ^ 2
xor ^
# bits es 1
bits = ~3
not ~
# bits es -4
bits = 3 << 1
Desplazamiento izq <<
# bits es 6
bits = 3 >> 1
Desplazamiento der >>
# bits es 1
Control de flujo
if
else:
print “Aaaaaaaaaaahhhhhhh”
else:
while darth_vader_is_alive:
return fighter_one
else:
return fighter_two
Llamada o ejecución
if “fighters” in kwargs:
if “mode” in kwargs:
….
Parámetros variables
como diccionarios (**kwargs)
• No necesita return
• Sintaxis
return wrapper
Decoradores
decorated_fn = logger(fight_club)
def fight_club(*figthters):
@winner_email_notification
@logger
def fight_club(*figthters):
…
Orientación a Objetos
Definición de una clase
class Fighter(object):
class Fighter:
self.name = name
…
def warmup(self):
…
Herencia
class Champion(Fighter):
def __private_method(self):
def public_method(self):
…
Métodos especiales
def __init__(self, args):
def __del__(self):
def __len__(self):
@staticmethod
def a_static_method(args):
…
Métodos de clase
class Fighter(object):
@classmethod
…
Atributos de clase
class Fighter(object):
…
Clases abstractas
class Fighter(object):
def warmup(self):
raise NotImplementedError
Instanaciación
fighter.warmup()
kung_fu_fighter.warmup()
fighter.fight(kung_fu_fighter)
Acceso a atributos
fighter.name
king_fu_fighter.style
Getters y setters
class Fighter(object):
def __init__(self):
super(KungFuFighter, self).__init__()
super(KungFuFighter, self).fight(other_fighter)
Excepciones
Excepciones
try:
except:
except NameError:
except ValueError:
except:
except:
except:
except:
else:
except:
finally:
UnicodeDecodeError(UnicodeError): Error de
decodificación unicode.
UnicodeEncodeError(UnicodeError): Error de
codificación unicode.
UnicodeTranslateError(UnicodeError): Error de
traducción unicode.
Tipos de excepciones
StopIteration(Exception): Se utiliza para indicar el final del iterador.
import <modulename>
Importando módulos
# fight_club.py
…
Importando módulos
import fight_club
fighter_one = fight_club.fighters[0]
fighter_two = fight_club.fighters[1]
fighter_one = fighters[0]
fighter_two = fighters[1]
fighter_one = luchadores[0]
fighter_two = luchadores[1]
# Linux, Mac OS X
$ sudo pip install virtualenv
# Fedora
$ sudo yum install python-virtualenv
# Debian, Ubuntu
$ sudo apt-get install python-virtualenv
Activación
user$ /path/to/virtualenv/bin/activate
(virtualenv)user$
Desactivación
(virtualenv)user$ deactivate
user$
Instalación de paquetes
gevent==1.0
greenlet==0.4.1
requests==1.2.3
wsgiref==0.1.2
Generación de
archivo de requisitos