python 9-3 如何定义带参数的装饰器,提取函数签名python3 inspect.signature()
2017-01-29 10:57
821 查看
9-3 如何定义带参数的装饰器
提取函数签名python3 inspect.signature()
带参数的装饰器,也就是根据参数定制化一个装饰器可以看生成器的工厂
每次调用typeassert,返回一个特定的装饰器,然后用它去装饰其他函数
提取函数签名python3 inspect.signature()
带参数的装饰器,也就是根据参数定制化一个装饰器可以看生成器的工厂
每次调用typeassert,返回一个特定的装饰器,然后用它去装饰其他函数
from inspect import signature def f(a,b,c=1):pass sig = signature(f) sig.parameters 实现一个对被装饰的函数的参数类型检查的装饰器
from inspect import signature def typeassert(*ty_args,**ty_kargs): def decorator(func): #func ->a,b #d = {'a':int,'b':str} sig = signature(func) btypes = sig.bind_partial(*ty_args,**ty_kargs).arguments def wrapper(*args,**kargs): #arg in d,instance(arg,d[arg]) for name, obj in sig.bind(*ty_args,**ty_kargs).arguments: if name in btypes: if not instance(obj,btyes[name]): raise TypeError('"%s" must be "%s"' %(name,btyes[name])) return func(*args,**kargs) return wrapper return decorator @typeassert(int,str,list) def f(a,b,c): print a,b,c
相关文章推荐
- 如何用python的装饰器定义一个像C++一样的强类型函数
- python如何定义不定参数函数
- python如何定义带参数的装饰器
- python_如何定义带参数的装饰器?
- Python中函数的参数定义和可变参数
- JS 自定义函数时,如何定义参数默认值
- Python def函数的定义、使用及参数传递实现代码
- python 调用dll中参数为BYTE的函数(注意接口定义的格式)
- Python函数中定义参数的四种方式
- Python中函数的参数定义和可变参数
- Python def函数的定义、使用及参数传递实现代码
- Python中函数的参数定义和可变参数
- Python中函数的参数定义和可变参数
- Python 利用装饰器检测函数参数
- Python中函数的参数定义和可变参数
- 各种python 函数参数定义和解析
- python 装饰器功能以及函数参数使用介绍
- python 装饰器功能以及函数参数使用
- 转:Python中函数的参数定义和可变参数
- 如何定义不定参数的函数