Download Python: Primeros Pasos - Renato Covarrubias

Document related concepts
no text concepts found
Transcript
Introducción
Tipos de Datos
Funciones Base
Clases
Python: Primeros Pasos
Renato Covarrubias Romero
[email protected]
Duoc Linux Day
Comunidad Linux Duoc
viernes, 14 de agosto de 2009
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Contenido
1
Introducción
2
Tipos de Datos
3
Funciones Base
4
Clases
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Contenido
1
Introducción
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
¿Qué es python?
I
I
Es un proyecto de Código Abierto
Es un lenguaje de programación interpretado multiparadigma:
I
I
I
I
Es imperativo (como C o Basic)
Es orientado a objetos (como C++ o Java)
Es funcional (como Lisp, Haskell o Scheme)
etc...
I
Tipificado débil.
I
Es el “antónimo” a Perl, python es más limpio y elegante para
programar.
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
¿De donde viene el nombre?
Lamentablemente no de la
familia de serpientes
constrictoras.
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
¿De donde viene el nombre?
Guido van Rossum (BDFL,
Benevolent Dictator for Life), llamó al
lenguaje en honor al grupo británico
de humoristas los Monty Python (a
veces conocidos como los Pythons).
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Filosofı́a
1
Bello es mejor que feo.
2
Explı́cito es mejor que implı́cito.
3
Simple es mejor que complejo.
4
Complejo es mejor que complicado.
5
Plano es mejor que anidado.
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Filosofı́a
6
Ralo es mejor que denso.
7
La legibilidad cuenta.
8
Los casos especiales no son tan especiales como para
quebrantar las reglas.
1
9
1
10
Aunque lo práctico gana a la pureza.
Los errores nunca deberı́an dejarse pasar silenciosamente.
A menos que hayan sido silenciados explı́citamente.
Frente a la ambigüedad, rechaza la tentación de adivinar.
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Filosofı́a
11
Deberı́a haber una (y preferiblemente sólo una) manera obvia de
hacerlo.
1
12
Aunque esa manera puede no ser obvia al principio a menos que
usted sea Holandés.
Ahora es mejor que nunca.
1
Aunque nunca es a menudo mejor que ahora ya.
13
Si la implementación es difı́cil de explicar, es una mala idea.
14
Si la implementación es fácil de explicar, puede que sea una
buena idea.
15
Los espacios de nombres (namespaces) son una gran idea
¡Hagamos más de esas cosas!
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Filosofı́a
Se puede encontrar un “huevo de pascua” con la filosofı́a.
1
import t h i s
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Contenido
2
Tipos de Datos
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Número Entero
int
Precisión fija
1
2
a = 42
print a
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Número Entero
long
Precisión arbitraria
1
2
3
# 2ˆ61 − 1
a = 2305843009213693951L
print a
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Número
float
Punto/Coma Flotante
1
2
3
# pi
a = 3.1415926535897931
print a
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Booleano
bool
Verdadero o Falso
1
2
3
# Morphy
a = False
print a
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
String
str
Inmutable
1
2
3
4
a = ” Hola Mundo ”
print a
p r i n t a+1
p r i n t a*2
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
String
unicode
Versión unicode de str
1
2
a = u ’ \xd1and\ x f a ’
print a
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Secuencia
list
Mutable, puede contener diversos tipos
1
2
3
4
lista
print
lista
print
= [ ’ aaa ’ , 1 , 9 0 ]
l i s t a [ −1]
[ 0 ] = ’ bbb ’
lista [0:2]
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Secuencia
tuple
Inmutable
1
2
3
4
t u p l a = (1 , 2 , 3)
tupla [0] = 2
tupla [0]
otratupla = ( tupla , ( ’a ’ , ’b ’ ) )
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Mapping
dict
Grupo de pares claves, valor
1
2
3
d i c t = { ” d i a ” : 24 , ” mes ” : ” agosto ” }
for k in d i c t :
p r i n t ” %s= %s ” % ( k , d i c t [ k ] )
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Conjunto
set y frozenset
sin orden, no contiene duplicados.
1
2
conj = set ( [ ’ a ’ , ’ b ’ , ’ a ’ ] )
print conj
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Falso?
¿Con tanto tipo de dato, que valores se consideran verdades y
cuales falsos?
I
None
I
False
I
0, OL, 0.0, 0j
I
’’, (), [], {}
I
Para las clases, cuando nonzero () o len () retornan 0
o False.
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Contenido
3
Funciones Base
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
(Algunas) Funciones Base
I
abs(x)
I
all ( i ), any(i )
I
bool([x ])
I
chr( i ), ord(c ), unichr( i )
I
complex([real [, imag]])
I
I
dict ([ arg])
divmod(a,b)
Renato Covarrubias Romero [email protected]
I
filter (funcion, iterable )
map(funcion, iterable [, ...])
reduce(funcion, iterable [, iniciador ])
sum(iterable [, inicio ])
I
float ([ x ])
I
help([objeto ])
I
hex(x)
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
(Algunas) Funciones Base
I
input ([ prompt]), raw input ([ prompt])
I
oct(x)
I
int ([ x [, radix ]])
I
open(nombre[,modo[,buf]])
I
len(s)
I
pow(x, y [, z ])
I
range([ inicio ,] fin [, salto ])
xrange([ inicio ,] fin [, salto ])
I
round(x[,n])
I
tuple ([ iterable ])
I
list ([ iterable ])
I
long([x [, radix ]])
I
min( iterable [,...][ key])
max(iterable [,...][ key])
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Funciones anónimas
Heredado de los lenguajes funcionales, existe lambda para definir
funciones anónimas.
1
2
f = lambda x : x+1
print f (4)
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Operadores Lógicos
I
x or y
I
x and y
I
not x
not tiene la menor prioridad en operadores booleanos. not a==b
es interpretado como not (a==b).
a == not b causará un error de sintaxis.
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Comparaciones
I
<
I
<=
I
>
I
>=
I
==
I
! = o <>
I
is
I
is not
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Operaciones Numéricas
int, float, long, complex
I
x +y
I
x −y
I
x ∗y
I
x/y
I
x %y
I
−x
I
+x
I
x ∗ ∗y
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Operaciones al bit
I
x|y
I
x ∧y
I
x&y
I
x << n
I
x >> n
I
∼x
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Tipos de Secuencia
str, unicode, list, tuple, ...
Los string puede ser con ’comilla simple’ o “comilla doble”.
I
x in s
I
x not in s
I
s+t
I
s*n, n*s
I
s[i]
I
s[i:j]
I
s[i:j:k]
I
len(s), min(s), max(s)
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
(Algunos) Métodos de Strings
I
capitalize(), lower(), upper(), swapcase()
I
center(ancho[,caracter])
I
count(sub[,inicio[,fin]])
I
find(sub[,inicio[,fin]])
I
isalpha(), isdigit(), islower(),...
I
join(seq), split([sep[,max]])
I
replace(old, new[,count])
I
zfill(ancho)
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
Métodos Secuencias Mutables
I
s[ i ] = x
I
s[ i : j ] = t
del s[ i : j ]
I
s.count(x)
I
s.index(x [, i [, j ]])
s. insert ( i ,x)
s.remove(x)
I
s[ i : j :k] = t
del s[ i : j :k]
I
I
s.append(x)
s. insert ( i ,x)
s.pop([i ])
I
s.reverse()
I
s. sort ([ cmp[,key[,rev ]]])
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Operadores
(Algunos) Métodos Diccionarios
I
a[k]
I
a[k] = v
del a[k]
I
k in a
a.has key(k)
Renato Covarrubias Romero [email protected]
I
a.items()
a.keys()
a.values()
I
a.clear ()
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
Contenido
4
Clases
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
¿Cómo se define una clase?
1
2
3
4
5
6
class Charla :
a = ’ Python ’
init
( self ):
def
s e l f . b = ” Primeros Pasos ”
def nombre ( s e l f ) :
r e t u r n s e l f . a+ ” : ” + s e l f . b
7
8
9
a = Charla ( )
p r i n t a . nombre ( )
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
¿Existen clases definidas?
!Por supuesto! :D y están agrupadas en módulos.
import modulo
1
2
import d a t e t i m e
p r i n t ( d a t e t i m e . d a t e t i m e . now ( ) )
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
¿Existen clases definidas?
Son demasiadas, y hay para muchas cosas. La documentación la
pueden encontrar en:
http://docs.python.org/library/
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
10mo Encuentro Linux
2009.encuentrolinux.cl
22, 23 y 24 de octubre.
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos
Introducción
Tipos de Datos
Funciones Base
Clases
¿Consultas?
Renato Covarrubias Romero [email protected]
Python: Primeros Pasos