正在加载中...

使用装饰器限制函数传参数的类型

  • 编辑时间: 2020-09-12 14:46:40
  • 浏览量: 1661
  • 作者: makerroot
  • 所有标签: python
  • 文章分类: 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

演示结果

演练情况

上一篇: 反思

下一篇: Python-asyncio异步编程、python垃圾回收机制剖析和jwt揭秘(含源码示例)

提交评论

评论列表

暂无评论

关于本站

1.记录生活

2.建站时间2019-04-05

3.主要技术Django2、Bootstrap...