首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python-装饰器案例剖析

python案例,需求是如何在不更改源代码和不更改原函数调用方式的基础上实现函数的功能新增?可通过高阶函数+嵌套函数实现装饰器效果

代码如下:

import time

#嵌套函数

def timer(func):

def deco():

start_time=time.time()

func()

stop_time=time.time()

print("the func run time is %s" %(stop_time-start_time))

return deco

#@ + "函数名" 是python中的一种语法糖

@timer

def test1():

time.sleep(2)

print('in the test1')

#@ + "函数名" 是python中的一种语法糖

@timer

def test2():

time.sleep(2)

print('in the test2')

#调用方式没有发生改变,源代码也没有发生改变

test1()

test2()

运行结果:

in the test1

the func run time is 2.012403726577759

in the test2

the func run time is 2.0124034881591797

[Finished in 4.2s]

可通过使用pycharm的debug功能进行查看代码的执行过程,可清洗看到每一步的执行步骤和顺序。

装饰器:修饰其它函数的工具,修饰添加功能,工具指的是函数

本质是函数,(装饰其它函数)就是为其它函数添加附加功能

为什么要使用装饰器?

a.不能修改被装饰的函数的源代码

b. 不能修改被装饰的函数的调用方式

结语

感谢阅读,欢迎在评论区中发表自己不同的观点,若有其他问题请在评论区留言,喜欢的朋友请多多关注转发支持一下。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190219A0FJSP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券