使用装饰器限制函数传参数的类型
- 编辑时间: 2020-09-12 14:46:40
- 浏览量: 1507
- 作者: makerroot
- 文章分类: python后端
- 评论数: 暂无评论
实例代码
from inspect import signature from functools import wraps def typeassert(*ty_args, **ty_kwargs): def decorate(func): if not __debug__: return func sig = signature(func) bund_types = sig.bind_partial(*ty_args, **ty_kwargs).arguments @wraps(func) def wrapper(*args, **kwargs): bund_values = sig.bind(*args, **kwargs) for name, value in bund_values.arguments.items(): if name in bund_types: if not isinstance(value, bund_types[name]): raise TypeError('Argument {} must be {}'.format(name, bund_types[name])) return func(*args, **kwargs) return wrapper return decorate @typeassert(int, int,int,int) def add(x, y,m,n): print(x, y) return x + y
演示结果
评论列表
暂无评论
热门阅读
10你有酒我有故事
提交评论