首页 > 解决方案 > Python 装饰器吐出无

问题描述

我正在学习 python 中的一些新主题,我终于接触到了装饰器,这看起来很酷,除了一个主要问题。下面是我运行的代码:

def new_dec(ori_func):
    def WrapFunc():
        print("First Line")
        ori_func()
        print("Second line")
    return WrapFunc

def new_func():
    print("This is the new function")

ThisFunc = new_dec(new_func)
print(ThisFunc())

但是,当执行此代码时,它会输出:

First Line
This is the new function
Second line
None

而且我不记得添加了 None 语句,这可能是已添加的类型变量吗?为什么会发生这种情况,以及如何解决。

标签: pythonvisual-studiopython-decorators

解决方案


您有四个打印语句。所以打印了四件事。默认情况下,函数返回None

>>> def f(): pass
>>> print(f())
None

检查如果您定义会发生什么:

def new_dec(ori_func):
    def WrapFunc():
        print("First Line")
        ori_func()
        print("Second line")
        return "Fourth Line"
    return WrapFunc

或者,您可以删除第四个打印:

# print(ThisFunc())
ThisFunc()

推荐阅读