Pyhton编程实践:Python之----装饰器
小职 2017-09-02 来源 :网络 阅读 695 评论 0

摘要:本篇Pyhton编程实践教程将为大家讲解Pyhton编程的知识点,看完这篇文章会让你对Python编程的知识点有更加清晰的理解和运用。

本篇Pyhton编程实践教程将为大家讲解Pyhton编程的知识点,看完这篇文章会让你对Python编程的知识点有更加清晰的理解和运用。

作用:

在不改变函数源代码的前提下,给函数增加新的功能。

装饰器
1,本质上是一个函数
2,功能---装饰其他函数(为其他函数添加其他功能)
3,不能修改被装饰函数的源代码
4,不能修改被装饰函数的调用方式

实现装饰器的知识储备:
1,函数即“变量”
2,高阶函数
a,把一个函数当作实参,传给另外一个函数(在不修改被装饰函数源代码情况下,为其增加功能)
b,返回值包含函数名(不修改函数的调用方式)
例子:
def bar():
print("this is bar")
def test(func):
print("this is test")----看作是添加的新功能
return func--------------bar其实就是一个内存地址,加上()的时候就能调用。当把bar当作参数传给test的时候,返回的就是bar内存地址。
bar = test(bar)-------------这个操作就相当于:即给了bar一个内存地址使其加上()能调用,且能将test函数里的print内容展示出来
bar()
运行结果:
this is test
this is bar
3,嵌套函数
在函数内部def一个函数。
def test():
print("hahaha")
def bar():
print("bababa")
bar()
test()
运行结果:
hahaha
bababa

高阶函数+嵌套函数 =>装饰器

import time
def timer(func):
def dec(*args,**kwarge):#加上这两个,是预防被装饰的函数带有参数。
start_time = time.time()
func(*args,**kwarge)#加上这两个,是预防被装饰的函数带有参数。
end_time = time.time()
print("pro run time is %s"%(end_time-start_time))
return dec
@timer #等价于 test1 = timer(test1)。timer(test1)这个函数执行结果是返回了 dec的内存地址。-----高阶函数知识点:返回值包含函数名
#其实就是相当于把dec对应的那个内存空间再多加了一个名字“test1”
#而原先的test1的内存空间当作一个参数,传给了timer,并给了个名字func。-----高阶函数知识点:把函数当作实参,传给另外一个函数
def test1():
time.sleep(3)
print("this is test1")
def test2(name):
print("welecome %s"%name)
test1()#所以当执行到这一段的时候,其实是执行的dec(),然后接下来步骤就显而易见了。
test2()

装饰器自己也可以带参数

以上,关于Pyhton的全部内容讲解完毕啦,欢迎大家继续关注!更多关于Python的干货请关注职坐标Python频道!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程