python @ 函数修饰器

函数修饰器大概分为两种:

  1. 带参数的函数修饰
  2. 不带参数的函数修饰

1. 带参数的函数修饰

用funA() 函数装饰器,去装饰 funB() 被修饰的函数

def funA(fn):
	print('A q前')
         fn()
         print('A 后')   
    return 'A return '
@funA
def funB():
	print('in BB')
#用函数A修饰函数B,funB等于把函数funB作为参数传递给funA()然后返回给funB

@funA 的等价操作:
funB=funA(funB)

@funA相当于操作funB=funA(funB),此时的funB 相当于一个变量名,或者函数名,取决与funA的ruturn 。

2. 不带参数的函数修饰

       使用嵌套函数来实现函数的传入
       *args,**kwargs的作用是允许传入任意数量和类型的参数。
def funA(fn): 
    print('A 前\n')
    def fn_in(*args,**kwargs): # 定义一个嵌套函数
        print('fn_in 前 \n')
        fn(*args,**kwargs)
        print('fn_in 后\n')
        return '嵌套函数返回'
    print('A 后 \n')
    return fn_in   #必须要有return不然会报错
@funA
def funB1(d1):
    print("函数B1:",d1)
funB1('B1参数')

@funA #传入多个参数
def funB2(d1,d2):
    print(d1,d2)
funB2("函数B2 第一个参数:","第二个参数")
out=funB1('传入参数')
>>>fn_in 前 
>>>函数B1: 传入参数
>>>fn_in 后
>>>out='vv'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值