python使用decorator转换函数的参数类型,pythondecorator,如题,下面的方法可以自动
python使用decorator转换函数的参数类型,pythondecorator,如题,下面的方法可以自动
如题,下面的方法可以自动对设定的函数参数类型做转换。
class ConvertArgumentTypes(object): """Converts function arguments to specified types.""" def __init__(self,*args, **kw): self.args = args self.kw = kw def __call__(self, f): def func(*args, **kw): nargs = [x[0](x[1]) for x in zip(self.args, args)] invalidkw = [x for x in kw if x not in self.kw] if len(invalidkw) > 0: raise TypeError, f.func_name + "() got an unexpected keyword argument '%s'" % invalidkw[0] kw = dict([(x,self.kw[x](kw[x])) for x in kw]) v = f(*nargs, **kw) return v return func#keyword arguments are handled normally.@ConvertArgumentTypes(int, float, c=int, d=str)def z(a,b,c=0,d=""): return a + b, (c,d)@ConvertArgumentTypes(int, int)def y(p,q): return p + qprint y("1","2")print z(1,2,c=34,d=56)
这个方法通常没必要用,只在一些特殊的场合才用得着。比如需要对用户输入的数据做一些类型校验时可以用得到。
如果调用函数时提供的数据类型没有办法转成需要类型时,会抛出异常。
相关内容
- python判断字符串中是否只有ASCII编码字符,pythonascii,下
- python使用Queue实现优先级队列,pythonqueue,使用Queue.Queu
- python多线程之使用ReadWriteLock,,ReadWriteLoc
- python 调用windows api查看系统的电量,pythonapi,通过调用
- 显示django中的所有url设置,显示djangourl设置,下面的脚本
- python给数字加千分位,每隔三位加逗号,python千分,如题
- python list常用操作封装,pythonlist封装,如下是一系列li
- python 计算时间差,时间加减运算代码,python时间差,Q
- python复制某文件夹下指定扩展名的文件,并且保留原目
- python使用正则表达式实现的javascript文件压缩代码,py
评论关闭