码迷,mamicode.com
首页 > 编程语言 > 详细

皇帝的新衣(python装饰器的理解和使用)

时间:2016-08-03 20:26:45      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

今天来说说装饰器。

在python语言中,装饰器的主要作用是减少重复输入的精髓。有了装饰器,可以非常直观而优雅的使用重复代码,就像一件衣服,可以给皇帝穿,也可以给任何人穿,只要你觉得需要这件“衣服”

语法: @装饰函数名    如@yifu  就是一个装饰器,yifu就是一个装饰函数

好吧,我们先来做一件衣服(装饰函数):

def yifu(func):     #yifu是装饰函数名,func是皇帝(被装饰的函数),合起来就叫:皇帝的新衣

    def gongneng():

         print(“我是一个装饰的功能”)

         func()

    return gongneng

 

衣服做好了,这件衣服里面可以添加很多的功能(gongneng),如领结等相关的配饰

 

接下来,这件衣服给谁穿呢?皇帝或者其他人

我们来造一批人:

def people1():

    print("我是路人甲")

def people2():

    print("我是路人乙")

def people3():

    print("我是路人丙")

def people4():

    print("我是路人丁")

 

找了4个人,现在有了衣服,也有人了,衣服给谁穿呢,随便 吧

给路人甲,就在路人甲函数定义前面加上一件衣服:

@yifu

def people1():

    print("我是路人甲")

 

给其他人也一样。

加了衣服的路人甲会输出衣服的功能和路人甲的功能,如果其他人也要这件衣服,没事,那就都给一件。

 

来一个例子,做了一个计算函数执行时间的装饰器(衣服),可以通过装饰器语句用在你喜欢用的函数上,就像衣服随便穿。

#皇帝的新衣:函数装饰器

import time

def yongshi(func):            #这件衣服的功能是计算函数执行的时间

    def baozhuang():          #这个功能是计算函数执行时间
        start = time.clock()
        func()                #这是要装饰的函数
        end = time.clock()
        print(执行装饰器功能--用时:, end-start)
    return baozhuang


def foo1():    
    print (没有装饰过的foo1函数被调用)

@yongshi                        #这个就是做好的装饰器了
def foo2():    
    print (已经装饰过的foo2函数被调用)
    
    
#调用原来的函数
foo1()
print(-*20)
foo2()

技术分享

 

总结:python的装饰器不是一个特别牛的功能,只是为了代码的简洁和优雅,在多处重复使用一个功能的时候,可以考虑用装饰器来更加简洁的表达,当然也可以穿很多件衣服,进行多次装饰,他的基础思想就是python能在函数里定义函数,这个功能倒是比较特别,装饰器就是基于这个功能而诞生的。充分体现了一些数据都是对象的思想。

有想用一用的冲动吗?

下一次想说什么没有想好,想好了再写。python入门还是比较酸爽,修炼在自身!!!!

 

皇帝的新衣(python装饰器的理解和使用)

标签:

原文地址:http://www.cnblogs.com/hzwsj/p/5734175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!