34.Python:装饰器
2021/6/25 14:56:52
本文主要是介绍34.Python:装饰器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
""" 储备知识点 *args,**kwargs 名称空间与作用域 函数对象 函数的嵌套定义 闭包函数 无参装饰器 有参装饰器 """ # 1.*args,**kwargs # def index(x, y): # print(x, y) # # # def wrapper(*args, **kwargs): # index(*args, **kwargs) # # # wrapper(y=222, x=111) # 2.名称空间与作用域:名称空间的“嵌套”关系是在函数的定义阶段,即检测语法的时候确定的 # 3.函数对象: # 可以把函数当做参数传入 # 可以把函数当做返回值返回 # def index(): # return 123 # # # def foo(func): # return func # # # res = foo(index) # print(res) # print(res()) # 4.函数的嵌套定义 # def outter(): # def wrapper(): # pass # return wrapper # 闭包函数 # def outter(x): # def wrapper(): # print(x) # return wrapper # # # f1 = outter(1) # f1() ----装饰器介绍
""" 1.什么是装饰器 装饰器指的是定义一个函数,该函数用来装饰其他函数,为其他函数添加功能 2.为何要使用装饰器 开放/封闭原则 开放:指的是对拓展功能是开放的 封闭:指的是对修改源代码是封闭的 在不修改被装饰对象源代码以及调用方式的前提下为被装饰对象添加新功能 3.如何使用装饰器 """ import time from functools import wraps # def index(x, y): # time.sleep(3) # print('welcome %s %s' % (x, y)) # # # def home(name): # time.sleep(2) # print('welcome %s to home' % name) # return 123 # # # def outter(func): # def wrapper(*args, **kwargs): # start = time.time() # res = func(*args, **kwargs) # stop = time.time() # print(stop - start) # return res # return wrapper # # # index = outter(index) # index(111,222) # # home = outter(home) # res = home('SEPIA') # print('返回值==>', res) # 语法糖 # 在被装饰对象正上方单独一行写@装饰器名字 def timmer(func): @wraps(func) def wrapper(*args, **kwargs): start = time.time() res = func(*args, **kwargs) stop = time.time() print(stop - start) return res return wrapper @timmer def index(x, y): """这是主页功能""" time.sleep(3) print('welcome %s %s' % (x, y)) @timmer def home(name): time.sleep(2) print('welcome %s to home' % name) return 123 index(111, 222) home('SEPIA') print(index.__name__) print(index.__doc__)
这篇关于34.Python:装饰器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04Python外包有哪些常见的主要库-icode9专业技术文章分享
- 2024-10-02基于深度学习的钢铁缺陷检测系统(yolov8、注意力机制、PyQt5界面、Python)
- 2024-10-01怎么用python搭建一个系统-icode9专业技术文章分享
- 2024-09-30Python基础入门教程
- 2024-09-30获取参数学习:Python中的基础教程
- 2024-09-30Python编程基础详解
- 2024-09-29点击加载学习:Python编程基础教程
- 2024-09-29数据科学五大Python前端库:第二部分
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础