python - 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 语句,这可能是已添加的类型变量吗?为什么会发生这种情况,以及如何解决。
解决方案
您有四个打印语句。所以打印了四件事。默认情况下,函数返回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()
推荐阅读
- javascript - 承诺会在没有等待的情况下提前退出执行吗?
- python - 当 y 的范围仅为 8 时,如何在 Matplotlib 中的 xtics 中强制范围为 0 到 100
- javascript - 当我在登录我的 Nodejs 应用程序后尝试发送响应时,我得到一个空响应,该怎么办?
- java - 使用 NetBeans 继承来运行程序,因为 NetBeans 输出不能正常“工作”
- latex - 带有参考文件的 Tex to Word 管道
- docker - Kubernetes 容器参数行为不正确
- javascript - 如何将 onClick 添加到地图`传单`
- azure - ADF 协作分支与发布分支
- javascript - 如何知道用户在使用 firebase 登录时是否验证了他的邮件
- complexity-theory - nT(n/2)+n 的复杂度