首页 > 编程语言 > 详细

python的装饰器详解

时间:2020-02-27 15:38:30      阅读:74      评论:0      收藏:0      [点我收藏+]

python拥有三大器,装饰器,迭代器和生成器

装饰器其实就是高级函数和嵌套函数的总和,不仅能够减少代码的数量,而且在以后的生产环境,也是必备的一种基本代码技术。

首先现在我会一步一步,从高级函数,嵌套函数,再到装饰器,这样的过程来慢慢向大家详解装饰器。

第一什么是高级函数

变量可以指向函数; 函数的参数可以接收变量; 一个函数可以接收另一个函数作为参数

简单点来说,满足高级函数的条件有两种:

(1)某一函数当做参数传入另一个函数中

(2)函数的返回值包含n个函数,n>0

高级函数怎么用

好,是不是看起来还是有点迷糊。。。。,那我们来看一个例子

技术分享图片
1 def test1():
2     print("this is test1")
3 def test2(fun):
4     fun()
5     print("this is test2")
6 test2(test1)
View Code

 

从例子中可以看到fun函数被作为参数传入到test2函数中,这个就是最简单的高级函数。

第二什么是嵌套函数

在一个函数体内创建另外一个函数,这种函数就叫嵌套函数

嵌套函数怎么用

技术分享图片
def foo():
    def bar():
        print("in the bar")
    bar()
foo()
View Code

第三装饰器是什么

 在不改变原函数以及原函数的调用的情况下扩展原函数的功能

学了上面两种不同的函数之后,我们来学习装饰器就简单多,因为装饰器就是这两种函数相加而成的。

我们先来看个简单的例子。

技术分享图片
import time

def deco(f):#将函数作为参数传入,这是高级函数的写法
    def wrapper():#里面又多个函数,这是嵌套函数的写法
        start_time = time.time()
        f()
        end_time = time.time()
        execution_time = (end_time - start_time)*1000
        print("time is %d ms" %execution_time )
    return wrapper

@deco
def f():#新增加的功能
    print("hello")
    time.sleep(1)
    print("world")

if __name__ == __main__:
    f()
View Code

 

python的装饰器详解

原文:https://www.cnblogs.com/HuangJiaPing/p/12372137.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!