Python基础装饰器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础装饰器相关的知识,希望对你有一定的参考价值。
装饰器:
装饰器:用来修改函数功能的函数
- 可以在不改变原函数的基础上添加功能
实现装饰器的方法:从函数中返回函数,将原函数作为一个参数传给另一个函数代码:装饰器pro_print在函数执行前输出提示"welcome to class"
def pro_print(fun): # 装饰器函数 def wrapper(*args,**kwargs): # 接收各种类型的不定长参数 print("welcome to class") fun() return wrapper @pro_print # 语法糖,在函数前使用用于装饰函数 def fun(): print(‘hello,python‘) fun()
但装饰器会覆盖原有函数的函数名,提示文档等信息
def pro_print(fun): # 装饰器函数 def wrapper(*args,**kwargs): # 接收各种类型的不定长参数 ‘‘‘执行函数前提示welcom to class‘‘‘ print("welcome to class") fun() return wrapper @pro_print # 语法糖,在函数前使用用于装饰函数 def fun(): ‘‘‘输出hello,python‘‘‘ print(‘hello,python‘) fun() print(fun.__name__) print(fun.__doc__)
测试结果:
导入functools中的wraps函数可以解决这个问题
from functools import wraps def pro_print(fun): # 装饰器函数 @wraps(fun) def wrapper(*args,**kwargs): # 接收各种类型的不定长参数 ‘‘‘执行函数前提示welcom to class‘‘‘ print("welcome to class") fun() return wrapper @pro_print # 语法糖,在函数前使用用于装饰函数 def fun(): ‘‘‘输出hello,python‘‘‘ print(‘hello,python‘) fun() print(fun.__name__)
测试结果:
以上是关于Python基础装饰器的主要内容,如果未能解决你的问题,请参考以下文章