装饰器引入 | Python从入门到精通:高阶篇之十七

查看上一节:闭包函数

装饰器引入

# 创建几个函数

def add(a , b):
    '''
        求任意两个数的和
    '''
    r = a + b
    return r


def mul(a , b):
    '''
        求任意两个数的积
    '''
    r = a * b
    return r    

# 希望函数可以在计算前,打印开始计算,计算结束后打印计算完毕
# 我们可以直接通过修改函数中的代码来完成这个需求,但是会产生以下一些问题
#   ① 如果要修改的函数过多,修改起来会比较麻烦
#   ② 并且不方便后期的维护
#   ③ 并且这样做会违反开闭原则(OCP)
# OCP:程序的设计,要求开放对程序的扩展,要关闭对程序的修改

r = add(123,456)
print(r)

我们希望在不修改原函数的情况下,来对函数进行扩展。只需要根据现有的函数,来创建一个新的函数

def fn():
    print('我是fn函数....')

def fn2():
    print('函数开始执行~~~')
    fn()
    print('函数执行结束~~~')

fn2()    

执行结果为:
装饰器引入 | Python从入门到精通:高阶篇之十七
此时就达到了对fn函数的一个扩展。

对第一个加法示例进行扩展:

def new_add(a,b):
    print('计算开始~~~')
    r = add(a,b)
    print('计算结束~~~')
    return r

r = new_add(111,222)    
print(r)

执行结果为:
装饰器引入 | Python从入门到精通:高阶篇之十七
上边的方式,已经可以在不修改源代码的情况下对函数进行扩展了。

但是,这种方式要求我们每扩展一个函数就要手动创建一个新的函数,实在是太麻烦了。

为了解决这个问题,我们创建一个函数,让这个函数可以自动的帮助我们生产函数。

点击查看配套视频教程

更多内容请订阅python学习站官方技术圈!

上一篇:sort | Python从入门到精通:高阶篇之十五


下一篇:Linux 查看某个端口是否启动