Python 装饰器 Bahaviour 不是我所期望的 [已关闭]

问题描述 投票:0回答:1

这有什么问题吗?

def decoratorIsNumber( func ):
    def isNumeric( a , b):
        a = a if str(a).isnumeric() else 0
        b = b if str(b).isnumeric() else 0
        func( a , b )
    return isNumeric

@decoratorIsNumber
def addthenumbers( a , b ):
    print( a )
    print( b )
    print( a + b )
    return a + b

print( addthenumbers( "l", 10) )

我希望我的最后一个打印语句能得到 10...但我没有得到

0
10
10
None

Process finished with exit code 0
python python-decorators
1个回答
0
投票

您需要在 isNumeric 函数中返回 func(a, b) 的结果。目前,没有任何回报。

更正:

def decoratorIsNumber(func):
    def isNumeric(a, b):
        a = a if str(a).isnumeric() else 0
        b = b if str(b).isnumeric() else 0
        return func(a, b) 
    return isNumeric
© www.soinside.com 2019 - 2024. All rights reserved.