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
结束执行