Python装饰器如何实现功能扩展?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2016个文字,预计阅读时间需要9分钟。
1. 装饰器定义:给已有函数增加额外功能的函数,本质上是一个闭包函数。 装饰器特点:不修改已有函数的源代码和调用方式,仅增加功能。
1. 装饰器的定义
就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。
装饰器的功能特点:
闭包和装饰器的区分:
如果闭包函数的参数有且只有一个,并且是函数类型,那么这个闭包函数称之为装饰器。
写代码要遵循开放封闭原则,它规定已经实现的功能代码不允许被修改,但可以被扩展。
2. 装饰器的示例代码
# 定义装饰器def decorator(func):
def inner():
# 在内部函数里面对已有函数进行装饰
print('已添加登录认证')
func()
return inner
def comment():
print('发表评论')
# 调用装饰器对已有函数进行装饰,左边的comment=inner
comment = decorator(comment)
# 调用方式不变
comment()
3. 装饰器的语法糖写法
如果有多个函数都需要添加登录验证的功能,每次都需要编写func = decorator(func)这样代码对已有函数进行装饰,这种做法还是比较麻烦。
本文共计2016个文字,预计阅读时间需要9分钟。
1. 装饰器定义:给已有函数增加额外功能的函数,本质上是一个闭包函数。 装饰器特点:不修改已有函数的源代码和调用方式,仅增加功能。
1. 装饰器的定义
就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。
装饰器的功能特点:
闭包和装饰器的区分:
如果闭包函数的参数有且只有一个,并且是函数类型,那么这个闭包函数称之为装饰器。
写代码要遵循开放封闭原则,它规定已经实现的功能代码不允许被修改,但可以被扩展。
2. 装饰器的示例代码
# 定义装饰器def decorator(func):
def inner():
# 在内部函数里面对已有函数进行装饰
print('已添加登录认证')
func()
return inner
def comment():
print('发表评论')
# 调用装饰器对已有函数进行装饰,左边的comment=inner
comment = decorator(comment)
# 调用方式不变
comment()
3. 装饰器的语法糖写法
如果有多个函数都需要添加登录验证的功能,每次都需要编写func = decorator(func)这样代码对已有函数进行装饰,这种做法还是比较麻烦。

