python3 装饰器
2018-06-18 01:30:48来源:未知 阅读 ()
python3 装饰器
一、闭包
闭包的两个条件:函数内套有内层函数;内层函数引用外层函数定义的变量。
eg:
def outer():
x=10
def inner():
print(x)
return inner
二、装饰器
装饰器是为了在不改变原先函数源码的前提下,增加功能而存在的。执行流程:在调用被装饰器修饰的函数时,装饰器会先被调用,将被装饰函数的函数名传入装饰器函数,执行装饰器内层函数,内层函数会调用被装饰函数,从而实现被装饰函数的执行,而增加的功能在内层函数里写着,所以增加的功能也实现了。这样做的好处是,被装饰的函数的调用方法不变,从而防止牵一发而动全身的现象出现;没有改变被装饰函数的源码,符合开放封闭原则。
注意,装饰器函数必须是闭包函数。
eg:
装饰器函数:
import time
def show_time(f):
def inner(*args,**kwargs): #设定不定长参数,防止被装饰函数有参数
start_time=time.time()
f(*args,**kwargs)
time.sleep(3)
end_time=time.time()
print('spend_time=%s'%(end_time-start_time))
return inner()
@show_time
def foo(): #被装饰器修饰的函数
print('ok')
foo()#调用函数
如果需要向装饰器函数中传参则在装饰器函数外围在套一层外部函数。
eg2:
def outer(*args):
def show_time(f):
def inner(*args,**kwargs):
pass
return inner
return show_time
@outer(‘参数’)
def foo ():
pass
foo()#调用函数
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- Python之装饰器笔记 2019-08-13
- python3 enum模块的应用 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash