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

@的含义是遇到这个函数直接找对应的重新写得那个吧?

@的含义是遇到这个函数直接找对应的重新写得那个吧?

比如

@log
def ccc(n):
    return n*n

,以后如果要去调用ccc函数,就直接把ccc传到log调用log运行了吧?

正在回答

1 回答

如果你熟悉Java的话,在Java中也使用‘@’在Javadoc和1.5以后的版本中的annotation。@是一个符号,一个Marker。在Python中, 我们用@实现decorator,比较常见的应用在:

  • @property

  • @classmethod

  • @staticmethod

“调用CCC函数,就直接 把CCC传到log调用log运行了吧?”你可以这个理解,但最好以decorator的思想去使用。简单直白的一个例子:

@dec2
@dec1
def func(arg1, arg2, ...):
   pass
上面的代码等同于:

def func(arg1, arg2, ...):
   pass
func = dec2(dec1(func))

希望你能理解了,如果我的答案有误或不完整,请各位修正

1 回复 有任何疑惑可以回复我~
#1

hundred 提问者

非常感谢!看来我java基础知识也不行,就只记住@override了
2016-04-11 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

@的含义是遇到这个函数直接找对应的重新写得那个吧?

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