Decorated function returns None

最后都变了- 提交于 2019-12-02 02:45:11

You don't return any value from new_function inside the decorator, therefore it returns None by default. Just change this line:

old_function(arg)

to

return old_function(arg)
Ajeet Shah

Adding to the answer by @eugeney: it would be easier if you used return for both cases in if:

if not isinstance(arg, int):
    return 'Bad Type'          # return 
else:
    return old_function(arg)   # return

And this:

print times2('2')                # prints Bad Type
print times2(2)                  # prints 4

You need to use *args and **kwargs

def dec(function):
    def new_f(*args, **kwargs):
        return function(*args, **kwargs)
    return new_f
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!