Python-回调函数

目录

定义回调函数

传递回调函数

使用修饰器注册回调函数


        将函数作为一个参数传递给另外一个调用,这个被传递的函数,就叫做回调函数。

定义回调函数

        回调函数的定义方法与一般函数定义相同

# 定义回调函数double()
def double(x):
    print(f"double()被调用")
    return x * 2

传递回调函数

        这里定义了另外两个回调函数,并在后面调用了它们。

# 定义回调函数quadruple()
def quadruple(x):
    print("quadruple()被调用")
    return  x * 4

# 定义中间函数getOddNumber(k, getEvenNumber)
def getOddNumber(k, getEvenNumber):
    k = k + 1
    print(f"k: {k}")
    print(f"将k传递给{getEvenNumber.__name__}")
    return 1 + getEvenNumber(k)

# 主函数
def main():
    print("调用main()函数")
    k = 1
    # 返回2k+1形式的奇数
    i = getOddNumber(k, double)
    print(f"i: {i}")
    # 返回4k+1形式的奇数
    i = getOddNumber(k, quadruple)
    print(f"i: {i}")
    # 返回8k+1形式的奇数
    i = getOddNumber(k, lambda k: k*8)
    print(f"i: {i}")


if __name__ == "__main__":
    main()

'''
调用main()函数
k: 2
将k传递给double
double()被调用
i: 5
k: 2
将k传递给quadruple
quadruple()被调用
i: 9
k: 2
将k传递给<lambda>
i: 17
'''

使用修饰器注册回调函数

        在类里面定义修饰器callback(),通过@demo.callback注册回调函数。

# 定义类
class Demo():
    
    def foo(self, num):
        return self.callback_func(num)
       
    # 定义修饰器
    def callback(self, func):
        self.callback_func = func


# 初始化类
demo = Demo()

# 注册回调函数1
@demo.callback
def double(x):
    return 2 * x

# 调用回调函数1
demo.foo(3)    # 6

# 注册回调函数2
@demo.callback
def inserve(x):
    return -x

# 调用回调函数2
demo.foo(3)    # -3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值