【Python面向对象】(6) 装饰器(decorator)
2021-02-16 18:19
标签:拓展 16px col python 操作 start 返回 原函数 方法 1. 用于拓展原来函数功能的一种函数 2. 返回函数的一种函数 3. 在不用更改原函数代码的前提下给函数添加新的的功能 (1)没有装饰器时的实现 (2)装饰器下的实现 【Python面向对象】(6) 装饰器(decorator) 标签:拓展 16px col python 操作 start 返回 原函数 方法 原文地址:https://www.cnblogs.com/ac-chang/p/12706151.html"""
不用装饰器的情况
"""
def hello():
print("hello...")
def test():
print("test...")
def hello_wrapper():
print("开始hello函数...")
hello()
print("结束hello函数...")
def test_wrapper():
print("开始test函数...")
test()
print("结束test函数...")
if __name__ == "__main__":
# 其实这两个函数的构造都差不多,但是分为了两个方法来书写,代码的重用度不够
hello_wrapper()
# 输出:
# 开始hello函数...
# hello...
# 结束hello函数...
test_wrapper()
# 输出:
# 开始test函数...
# test...
# 结束test函数...
"""
用装饰器实现
"""
def log_in(func):
""" 记录操作日志(英文) """
def wrapper():
print("start...")
func()
print("end...")
return wrapper
def log_out(func):
""" 记录操作日志(中文) """
def wrapper():
print("开始执行...")
func()
print("结束执行...")
return wrapper
# 使用1个装饰器
@log_in
def hello():
print("hello...")
# 使用2个装饰器
@log_out
@log_in
def test():
print("test...")
if __name__ == "__main__":
hello()
# 输出:
# start...
# hello...
# end...
test()
# 输出:
# 开始执行...
# start...
# test...
# end...
# 结束执行...
文章标题:【Python面向对象】(6) 装饰器(decorator)
文章链接:http://soscw.com/index.php/essay/56204.html