【问题标题】:Why is it returning None instead of True or False?为什么它返回 None 而不是 True 或 False?
【发布时间】:2021-03-21 07:09:27
【问题描述】:

此代码用于检查单词是否为回文,装饰器检查该单词是否为字符串

def check(func):
    def string(w):
        if w != str(w):
            print('no')
        else:
            print('yes')
        func(w)
    return string



@check
def palindrome(w):
    print(w)
    inverse = ''
    inverse = w[::-1]
    if inverse == w:
        print('1')
        return True
    else:
        print('2')
        return False


print(palindrome("test"))

运行后:

yes
test
2
None

此时,一切都应该没问题,但我不知道为什么它返回 None 而不是 True 或 False。

【问题讨论】:

  • 欢迎来到 StackOverflow!你能提供check 装饰器的代码吗?谢谢!

标签: python-3.x function decorator


【解决方案1】:

您的检查装饰器忽略了装饰函数的返回值。您需要在包装函数中显式返回:

def check(func):
    def string(w):
        if w != str(w):
            print('no')
        else:
            print('yes')
        return func(w)
    return string

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多