标签:
今天来说说装饰器。
在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入门还是比较酸爽,修炼在自身!!!!
标签:
原文地址:http://www.cnblogs.com/hzwsj/p/5734175.html