本文将简单介绍普通函数lambda匿名函数类成员函数作为回调函数的用法,回调函数参数采用不定长tuple参数列表进行传递

1 普通函数作为回调函数

# -*- coding: UTF-8 –*-

def callback_func(*kwargs):
    print(kwargs)

def process_callback_func(callback_func):
    for i in range(10):
        if i % 2 == 0:
            callback_func(i,i,i,i,i,i,i)

if __name__ == '__main__':
    print('=====>普通函数')
    process_callback_func(callback_func)

输出结果:

=====>普通函数
(0, 0, 0, 0, 0, 0, 0)
(2, 2, 2, 2, 2, 2, 2)
(4, 4, 4, 4, 4, 4, 4)
(6, 6, 6, 6, 6, 6, 6)
(8, 8, 8, 8, 8, 8, 8)

2 lambda匿名函数作为回调函数

# -*- coding: UTF-8 –*-

def callback_func(*kwargs):
    print(kwargs)

def process_callback_func(callback_func):
    for i in range(10):
        if i % 2 == 0:
            callback_func(i,i,i,i,i,i,i)
if __name__ == '__main__':
    print('=====>lambda函数')
    process_callback_func(lambda *args:print(args))

输出结果:

=====>lambda函数
(0, 0, 0, 0, 0, 0, 0)
(2, 2, 2, 2, 2, 2, 2)
(4, 4, 4, 4, 4, 4, 4)
(6, 6, 6, 6, 6, 6, 6)
(8, 8, 8, 8, 8, 8, 8)

3 类成员函数作为回调函数

如果回调函数是一个类成员函数,那么调用该回调函数时,第一个参数必须是该类的一个对象,也就是说,必须将该类的对象,作为一个普通参数,传递给调用该回调函数的函数。

# -*- coding: UTF-8 –*-
class basic:
    def __init__(self):
        pass
    def callback(self,*param):
        print(param)

def process_obj_callback_func(obj,callback_func):
    for i in range(10):
        if i % 2 == 0:
            callback_func(obj,i,i,i,i)

if __name__ == '__main__':
    print('=====>类成员函数')
    process_obj_callback_func(basic(),basic.callback)
    pass

输出结果:

=====>类成员函数
(0, 0, 0, 0)
(2, 2, 2, 2)
(4, 4, 4, 4)
(6, 6, 6, 6)
(8, 8, 8, 8)