为了账号安全,请及时绑定邮箱和手机立即绑定

​这段装饰器代码为什么return f(*args, **kw)得到的是None?

def log(prefix):

    def log_decorator(f):

        def wrapper(*args, **kw):

            print '[%s] %s()...' % (prefix, f.__name__)

            return f(*args, **kw)

        return wrapper

    return log_decorator


@log('DEBUG')

def test():

    pass

print test()



正在回答

1 回答

问题不在于你的装饰器,log写的并没有问题。
测试下
def test():
    pass
print test()
#None
这段话之前的代码,都是装饰器呀,是让test函数带上“DEBUG”和你的函数名,实际上test()函数啥也没做,
问题在于test函数,定义之后什么也没做。
1 回复 有任何疑惑可以回复我~
#1

John_Skeet 提问者

这个pass是什么都不做吗,所以执行test()是None?
2017-04-18 回复 有任何疑惑可以回复我~
#2

John_Skeet 提问者

非常感谢!
2017-04-19 回复 有任何疑惑可以回复我~
#3

高山之蓝

没有返回值,默认return None
2017-06-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

​这段装饰器代码为什么return f(*args, **kw)得到的是None?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信