繁体   English   中英

Python包装函数丢弃参数

[英]Python wrapper function discarding arguments

我有一个设置,其中事件处理程序始终是带有单个事件参数的函数。

但是我经常发现自己编写的处理程序不使用任何事件信息。 因此,我不断编写以下形式的处理程序:

def handler(_):
    #react

为了抛弃参数。

但是我希望我不必这样做,因为有时我想将处理程序重用为不带参数的常规操作函数,有时我想将现有的零参数函数用作处理程序。

我当前的解决方案是使用lambda包装函数:

def handler():
    #react

event.addHandler(lambda _:handler())

但是,由于其他原因,这似乎是错误的。

我对lambda的直观理解是,它首先是对返回值的描述,而事件处理程序则什么也不返回。 我感觉到lambda旨在表达纯功能,在这里我仅将它们用于引起副作用。

另一个解决方案是放弃所有参数的通用装饰器。

def discardArgs(func):
    def f(*args):
        return func()
    return f

但是我在很多地方都需要它,而且看起来很简单,不得不将这样的实用程序导入每个脚本似乎很可笑。

有没有特别标准或“ pythonic”的方法来包装函数以丢弃所有参数?

使用* args

def handler(*args):
    #react

然后handler可以接受0个参数,也可以接受任意数量的位置参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM