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