Sunteți pe pagina 1din 18

Definicin

def nombreFuncion(p1,p2,): Documentacin cuerpo

//return slo si se quiere devolver algo distinto de None

Variable globales y locales


Las variables declaradas en el nivel ms alto del programa son llamadas variables globales. Son visibles para todos los bloques de cdigo (globals()). Y las variables locales son aquellas que se definen dentro de funciones y slo se pueden usar dentro de la misma funcin (locals()).

Tipos de argumentos

Argumentos requeridos
def func(arg1, arg2, arg3,):

Argumentos opcionales
def func(arg1, arg2=val2, arg3=val3):

Nmero de argumentos variable


def func(*args):

Nmero de argumentos de llave variable


def func(**kargs):

Objetos mutables como argumentos


En Python el paso de argumentos se le conoce como paso por referencia de objeto. Este difiere del paso por valor o por referencia. Si un objeto inmutable como parmetro cambia dentro de una funcin, este cambio no tiene efecto afuera de la funcin, pero si se hace un cambio a un objeto mutable se ver reflejado afuera de la funcin con excepcin de las reasignaciones.

Expresiones lambda

Son pequeas funciones annimas que evaluan su nica expresin asociada.

lambda arg1,arg2, arg3 : expresin Ejemplo: T_C_a_kelvin=lambda c: c+273.15

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.

Ejemplo: def factorial(n): if n<=1: return 1 else: return n*factorial(n-1)

Funciones como objetos


Las funciones son objetos de primera clase en Python. Pueden ser pasadas como argumentos a otras funciones, almacenadas en estructuras de datos y regresadas como resultado de una funcin. Ejemplo: def llamarfun(func): return func()

def hola(): return "hola mundo" print llamarfun(hola)

Funciones como objetos


Cuando una funcin es manejada como informacin, implcitamente lleva informacin relacionada con el entorno que la rodea de donde fue definida. Cuando las sentencias que conforman a una funcin son empaquetas juntas con el entorno en donde se ejecutan, el objeto resultante es un closure.

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

Funciones generadoras (Generators)


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

Funciones generadoras (Generators)


for i in contar(5): print i 2 in contar(5)

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.

R.next() R.send(1) R.send(Cadena)

Atributos de funciones

Las funciones pueden tener atributos arbitrarios. Estos atributos son almacenados en su atributo __dict__

Ejemplo: def saludar(): print Hola saludar.sent=1

S-ar putea să vă placă și