python装饰器 语法糖

不打扰是莪最后的温柔 提交于 2019-12-04 18:17:26

简介:

装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。

比如说我们写flask,路由就是用装饰器定义的。如果写权限控制,那么权限控制一般也是由装饰器来实现的。日志记录,一般也可以通过装饰器来实现。

简单说,就是为了给某些函数增加一种或几种功能的做法。

下面举例实现。

一:基本函数

1.源码

from time import sleep


def watch_movie():
    print('看电影')
    sleep(3)
    print('The End')


if __name__ == '__main__':
    watch_movie()
View Code

2.执行结果

代码很简单,先打印看电影,间隔3秒,打印The End。

二:装饰器原理

1.目标:计算函数运行时间

2.源码

from time import sleep, time


def ceal_time():
    before = time()
    watch_movie()
    after = time()
    print('函数运行%s秒' % (after - before))


def watch_movie():
    print('看电影')
    sleep(3)
    print('The End')


if __name__ == '__main__':
    ceal_time()
View Code

3.执行结果

代码很简单,先打印看电影,间隔3秒,打印The End,然后打印函数运行计时。

4.分析

我们把一个函数放进另一个函数去运行,这就是装饰器的基本工作原理。

三:改造计时函数为通用函数

1.目标:把计算函数运行时间这个功能,适配给不同的函数。

2.源码

from time import sleep, time


def ceal_time(fun):
    before = time()
    fun()
    after = time()
    print('函数运行%s秒' % (after - before))


def watch_movie():
    print('看电影')
    sleep(3)
    print('The End')


def play_game():
    print('玩游戏')
    sleep(3)
    print('Game Over')


if __name__ == '__main__':
    ceal_time(watch_movie)
    ceal_time(play_game)
View Code

3.执行结果

 

4.

5.

6.

7.

8.

9.

 

四:

1.

2.

3.

4.

5.

6.

7.

8.

9.

 

五:

1.

2.

3.

4.

5.

6.

7.

8.

9.

 

六:

 

1.

2.

3.

4.

5.

6.

7.

8.

9.

 

七:

1.

2.

3.

4.

5.

6.

7.

8.

9.

 

八:

1.

2.

3.

4.

5.

6.

7.

8.

9.

 

九:

1.

2.

3.

4.

5.

6.

7.

8.

9.

 

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