我有一个设置,其中事件处理程序始终是采用单个事件参数的函数。
但通常情况下,我发现自己编写的处理程序不会使用任何事件信息。所以我经常编写以下形式的处理程序:
def handler(_):
#react
为了放弃这个论点。
但是我希望我不必这样做,因为有时候我想重用处理程序作为不带参数的通用动作函数,有时我会使用现有的零参数函数作为处理程序。
我目前的解决方案是使用lambda包装函数:
def handler():
#react
event.addHandler(lambda _:handler())
但由于其他原因,这似乎是错误的。
我对lambda的直观理解是它首先是对返回值的描述,而事件处理程序不返回任何内容。我觉得lambdas是用来表达纯粹的功能,在这里我只使用它们来引起副作用。
另一个解决方案是一般的装饰者丢弃所有论据。
def discardArgs(func):
def f(*args):
return func()
return f
但是我需要在很多地方使用它,并且为了这么简单的事情,将这样的实用程序导入每个脚本似乎很愚蠢。
是否有一种特殊的标准或“pythonic”方式来包装函数以丢弃所有参数?