python3帶參數的裝飾器 函數參數類型檢查


from inspect import signature#python3才有的模塊
def typeassert(*args,**kwargs):
    def decorator(fun):
        sig=signature(fun)
        btypes=sig.bind_partial(*args,**kwargs).arguments
        def wrapper(*funargs,**funkwargs):
            for name,stype in sig.bind_partial(*funargs,**funkwargs).arguments.items():
                if name in btypes:
                    if not isinstance(stype,btypes[name]):
                        raise TypeError("'%s' must be '%s'"%(name,btypes[name]))
            return fun(*funargs,**funkwargs)
        return wrapper    
    return decorator

@typeassert(int,str)
def myFun(a,b):
    print(a,b)
myFun(12,"12")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM