Soporte

Habla con gente sobre python en un grupo de skype.
Skype:
hackloper

Python

All created with python

domingo, 1 de noviembre de 2015

Posted by HackLoper |
Con esta función utilizandola como decorador podremos decidir que tipo de datos pasar como parametros en una función.

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