博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-装饰器的最终形态和固定格式 语法糖
阅读量:6289 次
发布时间:2019-06-22

本文共 1299 字,大约阅读时间需要 4 分钟。

 
import timedef timer(f):   #  这是一个装饰器函数    def inner():        start = time.time()        f()     # 被装饰的函数        end = time.time()        print('函数执行了%d秒' %(end-start) )    return inner@timer      # 语法糖  @装饰器函数名def func(): # 被装饰的函数    time.sleep(3)    print('这是一个函数执行的内容')func()

 

装饰带参数函数的装饰器

import timedef timer(f):   #  这是一个装饰器函数    def inner(*args,**kwargs):        start = time.time()        ret = f(*args,**kwargs)     # *args,表示打散元组中每个元素传递        end = time.time()        print('函数执行了%s秒' %(end-start) )        return ret    return inner# 两个参数传递,按位置传递参数方式 *args就可以解决@timer      # 语法糖  @装饰器函数名def func(a,b): # 被装饰的函数    time.sleep(0.02)    print('同志们',a,b)    return '新年好'# 一个位置参数,*args就能传递@timer      # 语法糖  @装饰器函数名def func1(a): # 被装饰的函数    time.sleep(0.02)    print('同志们',a)    return '新年好'# 如果赋值传递则需要**kwargs来解决@timer      # 语法糖  @装饰器函数名def func2(a,b=2): # 被装饰的函数    time.sleep(0.02)    print('同志们',a,b)    return '新年好'ret = func(1,2)ret1 = func1(1)ret2 = func2(1)print(ret,ret1,ret2)

 

装饰器的固定格式

def wrapper(f):   #  这是一个装饰器函数    def inner(*args,**kwargs):        ret = f(*args,**kwargs)     # *args,**kwargs表示打散元组中每个元素传递        return ret    return inner@wrapperdef func(a,b): # 被装饰的函数,可以传递参数    print('这是函数主体',a,b)ret = func(1,2) # 这里执行的是inner

 

 

 

 

转载于:https://www.cnblogs.com/alet/p/9737508.html

你可能感兴趣的文章
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>