Python通过传递函数自定义行为

2024-04-19 19:09:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个函数,它接受2个常规参数(字符串)和1个函数。主要功能是使用2个字符串参数(例如保存到数据库)。函数参数将允许添加额外的行为。示例:

def call(arg1, arg2, func):
    save(arg1, arg2) # main functionality here.
    if callable(func):
        func(arg1, arg2)

def with_callback():
    def log(*args):
        values = ', '.join(str(x) for x in args)
        print('call used with arguments: {values}'.format(values=values)

    call('example', 'case', log)

这个想法和有效的Python是一样的:

Item 23: Accept Functions for Simple Interfaces Instead of Classes.

因此,实现类似于list.sort(key=somefunc)collections.defaultdict的第一个参数

所以问题可以归结为:

如何实现函数(或类?)以函数作为参数,以便定义自定义行为?

(或者用不同的措辞:当使用函数作为参数时,自定义行为的首选方法是什么


Tags: 函数字符串功能logfor参数defwith