装饰器的介绍

装饰器的介绍

装饰器的作用

在不改变原有函数的源代码的情况下,给函数增加新的功能。

装饰器的功能特点:

装饰器符合开发中的封闭开放原则。

装饰器的格式

装饰器的语法格式:

def decorator(fn): # fn: 被装饰的目标函数
	def inner():
		'''执行函数之前'''
		fn() # 执行被装饰的目标函数
		'''执行函数之后'''
	return inner

问题:怎么能够在不修改comment函数的前提下给它增加验证功能?

def comment():
	print('发表评论....')

使用步骤

  1. 定义一个装饰器(本质是闭包)
  2. 使用装饰器装饰函数
# 1. 定义一个装饰器(装饰器本质是闭包)
def check(fn):
    def inner():
        print('登录验证....')
        fn()
    return inner

# 需要被装饰的函数
def comment():
    print('发表评论....')

# 2. 使用装饰器来装饰函数(增加一个登录功能)
comment = check(comment)
comment()