课程
/后端开发
/Python
/python进阶
定义一个装饰器后,这样调用:
@log
abs(-8)
报语法错误
2016-01-03
源自:python进阶 2-12
正在回答
装饰器使用@是一个语法糖,是f=log(f)的简写,而且这个语法只能使用在函数定义处。如果你想在系统函数上使用装饰器,可以直接写
abs = log(abs) abs(-8)
你可以看看我的验证:
>>> def pri(f): def wrap(i): print('hi...') return f(i) return wrap >>> abs(-3) 3 >>> abs = pri(abs) >>> abs(-3) hi... 3 >>>
装饰器需要在函数定义的时候使用,你这里@log下面没有跟函数定义,而是直接调用了函数,所以就报错啊
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计