Professional Documents
Culture Documents
Nacional de Asunción
Facultad Politécnica
Paradigmas de la Programación
return saludo[idioma]
f = saludar("es")
print f()
>>> cuadrado = lambda x: x**2
>>> cuadrado(2)
4
>>> cuadrado(3)
9
>>> lambda x: x**2
<function <lambda> at 0xb74469cc>
>>>
>>> (lambda x: x**2)(3)
9
>>> a = lambda x, y, z: x*y*z
>>> a(2,3,4)
24
Valores Explícitos
Constantes, Variables
Operadores (Aritméticos, Lógicos)
Funciones
Identificadores (Nombres)
Literales (Cadenas, Números)
Formas entre paréntesis (Tuplas)
Formas entre corchetes (Listas)
Formas entre llaves (Diccionarios)
3 + 5
"Hola, Mundo"
a == 1
int("4")
(2, 4, 6)
[3, 6, 9]
{'a': 1, 'b': 2}
Simple (Expresión)
Compuesto (Bloque)
print 42
if x: hacer(y)
return
a = 7
for item in lista: print item
while 1: print 'Hola'
>>> 4%2
0
>>> 5%2
1
>>> bool(4%2)
False
>>> bool(5%2)
True
def iif1(condicion, verdadero, falso):
'Imperativo (sentencia)'
if condicion:
return verdadero
else:
return falso
# f = lambda a, b, c: (a and b or c)
iif4 = lambda condicion, verdadero, falso: condicion and verdadero or falso
def fun():
print "Dentro de la función"
var1 = 5
var2 = 6
print "var1 es {} y var2 es {}".format(var1, var2)
print "var1 (glo): {}".format(globals()['var1'])
print "var2 (glo): {}".format(globals()['var2'])
print "var1 (loc): {}".format(locals()['var1'])
print "var2 (loc): {}".format(locals()['var2'])
inc5 = hacerInc(5)
inc7 = hacerInc(7)
cuad = hacerPot(2)
cubo = hacerPot(3)
decorada = externa(f) # 2
print decorada()
def externa(funcion):
def interna():
print "Antes de", funcion
retorno = funcion() # 1
return retorno + 1
return interna
@externa
def f(): return 1
print f() # 2
def decorador(funcion):
def nueva(*parametros):
print "Llamada a la función", funcion.__name__, repr(parametros)
return funcion(*parametros)
return nueva
print decorador(sumar)(2, 3)
@decorador
def restar(a, b): return a - b
print restar(5, 2)
return numero % 2 == 0
def pares(inicio=2):
numero = inicio
while True:
if par(numero):
yield numero
numero += 1
>>> a = pares(100)
>>> for i in range(10):print a.next(),
...
100 102 104 106 108 110 112 114 116 118
Humor informático
def fact1a(f):
'Imperativo con Recursividad'
if f == 0:
return 1
else:
return f * fact1a(f-1)
def fact1b(f):
'Imperativo con Recursividad (compacto)'
return 1 if f == 0 else f * fact1b(f-1)
def fact2b(f):
'Imperativo con Iteración (convencional)'
i = 1
r = 1
while i <= f:
r = r * i
i = i + 1
return r
def fact3(f):
'Implementación Funcional'
return reduce(lambda x, y: x * y, range(1, f+1))
>>> lista = []
>>> for item in range(1, 20):
... if item % 2 == 0:
... lista.append(item)
...
>>> lista
[2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> lista = [item for item in range(1,20) if item % 2 == 0]
>>> lista
[2, 4, 6, 8, 10, 12, 14, 16, 18]
# Bloque estructurado:
# Comprensión de lista: