如何编写一个不做任何事情的默认参数回调函数?[蟒蛇]

How to write a default parameter callback function that does nothing? [Python]

提问人:Pedro Contipelli 提问时间:11/7/2023 最后编辑:Pedro Contipelli 更新时间:11/8/2023 访问量:56

问:

我有时想将回调函数作为参数传递给 。但是,我希望默认行为什么都不做。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()

有没有更干净的方法来做到这一点,更像是上面的第一个例子?

python 回调 默认参数

评论

0赞 juanpa.arrivillaga 11/7/2023
如果你控制,简单地检查是相当合理的my_functionif callback_function: callback_function()
0赞 juanpa.arrivillaga 11/7/2023
但如果你不想那样做,那么你现在所拥有的就很干净了。

答:

2赞 CDubyuh 11/7/2023 #1

呼叫“无”应该可以满足您的要求。“pass”是一个关键字,不能像那样调用。None 是默认值,可以使用 lambda 应用。

 def my_function(args, callback_function=lambda: None):
        # do something
        callback_function()

评论

0赞 juanpa.arrivillaga 11/7/2023
我实际上认为这不如 OP 干净。
1赞 CDubyuh 11/7/2023
是的,像其他答案一样包含 if 语句可能是完成 OP 要求的更“正确”的方式。这只是试图保留示例中提到的单行主题。
2赞 Daweo 11/7/2023 #2

您可以选择接受,并且仅在不是时才调用,即Nonecallback_functionNone

def my_function(args, callback_function=None):
  # do something
  if callback_function is not None:
      callback_function()