Python装修师吐槽None
Python Decorator is spitting out None
我正在 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语句,这可能是添加的类型变量吗?为什么会发生这种情况,如何解决。
您有四个打印语句。所以打印了四件事。默认情况下函数 returns 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()
默认情况下,函数 returns None。您只需调用该函数即可获得您期望的结果。
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)
ThisFunc() # get rid of the print statement
我正在 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语句,这可能是添加的类型变量吗?为什么会发生这种情况,如何解决。
您有四个打印语句。所以打印了四件事。默认情况下函数 returns 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()
默认情况下,函数 returns None。您只需调用该函数即可获得您期望的结果。
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)
ThisFunc() # get rid of the print statement