Python中如何编写无操作的默认回调函数参数?
问题:Python中如何给回调函数设置“无操作”默认值?
我有时需要向my_function传入回调函数作为参数,但希望默认行为是不执行任何操作。我曾尝试编写如下无效代码:
def my_function(args, callback_function=pass): # do something callback_function()
但这无法运行,我想到的可行方案是:
def do_nothing(): pass def my_function(args, callback_function=do_nothing): # do something callback_function()
有没有更简洁的实现方式,类似第一个示例那样?
更简洁的实现方式
用lambda表达式直接作为默认参数
这是最贴合你需求的简洁写法,不用单独定义空函数,直接在参数里写lambda: None就行:
def my_function(args, callback_function=lambda: None): # do something callback_function()
这个lambda本质就是一个不执行任何操作、返回None的空函数,完全满足默认无操作的要求,和你最初想直接写pass的思路一致,只是语法上用lambda替代了。
可选方案:默认值设为None,调用前判断
如果需要区分“没传回调”和“传了空回调”的场景,可以这么写:
def my_function(args, callback_function=None): # do something if callback_function is not None: callback_function()
这种写法更灵活,后续如果要修改默认行为,直接在判断逻辑里调整即可,不过代码量比lambda方式稍多一点。
内容的提问来源于stack exchange,提问作者Pedro Contipelli
相关产品推荐
相关产品推荐

