Con esta función utilizandola como decorador podremos decidir que tipo de datos pasar como parametros en una función.
Descargar pyVoidFunction.py
Ejemplo.
Descargar pyVoidFunction.py
''' by: hackloper twitter: https://twitter.com/hackloper blogger: http://hackloper.blogspot.com.es/ ''' import sys class Error(Exception): def __init__(self,key,param=None): self.key = key self.dic_code ={ 'paramDecorator':'decorator invalid parameters, are only valid : int , float , str , bool', 'functionParameters':'the functions do not have the same parameters', 'decoratorAndFunctionParameters':'decorator and the function do not have the same parameters', 'paramInvalid': 'param invalid \"%s\" type not valid' %(param) } def __str__(self): return self.dic_code[self.key] def void(*types): for i in types: if isinstance(i,type) == False: raise Error('paramDecorator') def inner(func): varnames = func.func_code.co_varnames def wrapper(*param): if len(varnames) != len(types): raise Error('decoratorAndFunctionParameters') if len(varnames) == len(param): for i in range(len(types)): if isinstance(param[i],types[i]) == False: raise Error('paramInvalid',varnames[i]) return func(*param) else: raise Error('functionParameters') return wrapper return inner
Ejemplo.
import pyVoidFunction @void(int,int) def funcion(x,y): return x ** y resultado = funcion(2,2) print resultado
0 comentarios:
Publicar un comentario