簡體   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