妙数

python中函数修饰符@的用法
python中使用@作为修饰符@修饰符‘@’符号用作函数修饰符是python2.4以后的版本中新增加的功能修饰符必...
扫描右侧二维码阅读全文
28
2018/10

python中函数修饰符@的用法

python中使用@作为修饰符

@修饰符

  • ‘@’符号用作函数修饰符是python2.4以后的版本中新增加的功能
  • 修饰符必须出现在函数定义前一行,不允许和函数定义在同一行,也就是说@A def f(): 是非法的。
  • 只可以在模块或类定义层内对函数进行修饰,不允许直接修饰一个类。
  • 一个修饰符就是一个函数,比如在@A def f():中,它将被修饰的函数(f)做为参数,并返回修饰后的同名函数(A)或其它可调用的东西。

本质上讲,修饰符@类似于回调函数,把其它函数作为自己的传入参数,在目的函数执行前,执行一些自己的操作,比如:计数、打印一些提示信息等,然后返回目的函数。

@修饰符函数执行顺序

先执行带修饰符的函数如@A,执行A函数------>执行被修饰的函数,如def f-------->将f中的参数传入A------>执行结束

  • 下面看一道关于python的笔试题目

@修饰符1.png

  • 给出如下代码,写出foo(2)的运算结果(略有修改)
def dec(f):
    n = 3

    def wrapper(*args, **kw):
        return f(*args, **kw)*n
    print('dec')
    return wrapper

@dec
def foo(a):
    print('foo')
    return a*2+2

print(foo(2))
  • 题目分析
    首先执行dec函数,打印'dec',然后foo函数传入参数2,返回结果2*2+2=6,随后将参数6传入dec函数,返回6*3=18
  • 题目验证
    将代码放到pycharm中运行查看结果,可以看到和分析的结果相同

@修饰符2.png

总结

以上是个人总结的关于@修饰符的用法,如有错误,欢迎指正

最后修改:2018 年 10 月 28 日 07 : 04 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论