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基础装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python基础---装饰器

1.16 Python基础知识 - 装饰器

python 基础篇 12 装饰器进阶

python基础-装饰器

python基础之装饰器

Python基础15_装饰器