Funciones en Python
Funciones en Python
Tipos de argumentos
Argumentos requeridos
def func(arg1, arg2, arg3,):
Argumentos opcionales
def func(arg1, arg2=val2, arg3=val3):
Expresiones lambda
Recursividad
La recursividad es la forma en la cual se especifica un proceso basado en su propia definicin. En python la recursin o recursividad funciona igual que en otros lenguajes.
Decoradores
Un decorador es una funcin cuya primera funcin es envolver otra funcin o clase. El propsito principal es alterar o mejorar el comportamiento de los objetos envueltos. Utilidad: Control de acceso Manejo de errores Liberar memoria por objetos temporales
Decoradores
Sintxis (para crear) def Decorador(funcion): def wraper(*args,**kwargs): //implementacin a funcion return wraper Sintaxis (para utilizar) @Decorador def funcion(args): cuerpo funcion=Decorador(funcion)
Ejemplo decorador
def descripcion(func): def decorada(*args,**kwargs): print(Llamando a {0} con {1} , {2} " .format (func.__name__, args, kwargs)) r = func(*args,**kwargs) print({0} regreso {1}.format(func.__name__, r)) return r return decorada
Ejemplo decorador
def pot(x,y): return x**y F=descripcion(pot) Res=F(2,3) #El resultado es 8
Funcin especial que sirve para crear iteradores. Usan la palabra reservada yield para regresar cada valor de la iteracin (similar a return).
Ejemplo: def contar(n): x=0 while x<n: print Valor en el generador, x yield x x+=1
Coroutines
Dentro de una funcin la sentencia yield puede ser usada tambin como una expresin que aparece de lado derecho de un operador de asignacin. La funcin que use a yield de esta manera se la conoce como coroutine. Ejemplo: def receptor(): print Listo para recibir while True: n=(yield) print Recibi: ,n R=receptor()
Coroutines
Se inicia un coroutine con el mtodo next() hasta que la funcin alcance la expresin yield. Despus se suspende la ejecucin y la coroutine espera el mtodo send() para continuar.
Atributos de funciones
Las funciones pueden tener atributos arbitrarios. Estos atributos son almacenados en su atributo __dict__