zoukankan      html  css  js  c++  java
  • 为函数的参数指定类型

    @typeassert(int, int, list)实现 java中 String name, int age 这种形式的参数,
    Python 参数必须为指定类型.如不符合则raise 错误信息.
    from inspect import signature
    def typeassert(*ty_args, **ty_kwargs):
    def decorator(func):
    sig = signature(func)
    btypes = sig.bind_partial(*ty_args, **ty_kwargs).arguments

    def wrapper(*args, **kwargs):
    for name, obj in sig.bind(*args, **kwargs).arguments.items():
    if name in btypes:
    if not isinstance(obj, btypes[name]):
    raise TypeError('%s must be%s' % (name,btypes[name]))
    return func(*args, **kwargs)

    return wrapper

    return decorator


    @typeassert(int, int, list)
    def f(a, b, c):
    print(a, b, c)


    f(1, "aa", [1, 2])
  • 相关阅读:
    linux
    linux
    linux
    linux
    linux
    linux
    linux
    idea插件篇之java内存分析工具(JProfiler)
    Jmeter(线程组+http请求+汇总报告)
    ZK客户端zkClient.bat
  • 原文地址:https://www.cnblogs.com/LinuxSuDa/p/8296545.html
Copyright © 2011-2022 走看看