Bootstrap

【Python装饰器】位置参数、关键字参数,装饰器可以在不修改原函数的情况下对函数进行扩展

def mul_(a,b):  #mul_为原函数
    return a*b
def sum_(a,b):
    return a+b
def begin_end(old):  #begin_end被称为装饰器,装饰器可以在不修改原函数的情况下对函数进行扩展 
    '''
    用来对其他函数进行扩展,使其他函数可以在执行前打印开始执行,执行后打印结束执行
    '''
    def new_function(*args,**kwargs): # *args装包为元组,**kwargs装包为字典,*args为位置参数,**kwargs为关键字参数
        print("开始执行")
        result=old(*args,**kwargs)  # *args拆包为位置参数传入,**kwargs拆包为关键字参数传入
        print("结束执行")
        return result
    return new_function
f=begin_end(mul_)
r=f(123,456)
print(r)

@begin_end
def sub_(a,b,c): #混合传参时,关键字参数必须在位置参数之后
    print(a-b-c)
sub_(23,c=1,b=2)

输出结果为:

开始执行
结束执行
56088
开始执行
20
结束执行

 

 

;