neto = lambda bruto, iva=21: bruto + (bruto*iva/100) print neto(100) # 121 def suma (n): return lambda x: x + n f=suma(2) g=suma(8) print f(10), g(10) # 12, 18 print suma(5)(11) # 16
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27] print filter(lambda x: x % 3 == 0, foo) # [18, 9, 24, 12, 27] print map(lambda x: x * 2 + 10, foo) # [14, 46, 28, 54, 44, 58, 26, 34, 64] print reduce(lambda x, y: x + y, foo) # 139
def check(f):
def wrapper(*args, **kwargs):
if 0 in args:
return None
else:
return f(*args, **kwargs)
return wrapper
@check
def inv(*args):
return [1.0/x for x in args]
print(inv(1,2,3))
print(inv(1,0,3)) # None
# Iterador implícito en el for
for i in "papanatas":
print i, # p a p a n a t a s
# Iterador explícito
it = iter("papanatas")
it.next() # p
it.next() # a
it.next() # p
it.next() # a
it.next() # n
it.next() # a
it.next() # t
it.next() # a
it.next() # s
it.next() # Error
a = xrange(1000000) # a no es una lista
b = (n for n in a if n%2==0) # b no es una lista
print b # <generator object <genexpr> at 0xb77c939c>
for i in b: print i, # 2 4 6 8 10 ...
def generador():
i = 0
while True: # un iterador infinito
yield i # devuelve i en este punto
i = i + 1
mi_gen = generador() # creamos el generador
mi_gen.next() # 0
mi_gen.next() # 1
mi_gen.next() # 2
class miclase:
def __init__(self, n1, n2):
self.n1 = n1
self.n2 = n2
# Representación del objeto como string
def __str__(self):
return "Soy un miclase con: n1="
+str(self.n1)+", n2="+str(self.n2)
# Permite asignar nuevos atributos
def __setattr__(self, name, val):
self.__dict__[name] = val
# Se llama con atributos no conocidos
def __getattr__(self, name):
return "No se lo que es "+name
o = miclase(2, 5)
print o # Soy un miclase con: n1=2, n2=5
o.n3 = 5
print o.n3 # Imprime "5"
print o.n4 # Imprime "No se lo que es n4"
Administración de Sistemas e Redes <ASR.USC[at]gmail.com>
Tomás Fernández Pena <tf.pena[at]usc.es>
Última actualización: 30-09-15 17:44 por tomas

Curso de Administración de Sistemas y Redes por Tomás Fernández Pena se distribuye bajo la licencia Creative Commons Recoñecemento-Compartir baixo a mesma licenza. 3.0 España.
Trabajo original en persoal.citius.usc.es/tf.pena/ASR.