簡體   English   中英

python是否缺少此基本功能編程功能?

[英]Is this essential functional programming feature missing from python?

我在python中有一個類,該類允許我保存一個函數(在數據庫中)供以后使用。 現在,我需要在類中有一個方法,該方法允許我在某些參數上調用此函數。 由於我不知道函數有多少個參數,因此我必須將它們作為列表傳遞。 這是事情崩潰的地方,因為我找不到任何方法來使參數從元組中獲取參數。 在LISP中,這非常容易,因為恰好有一個關鍵字(只有一個字符)“ @”:

(defmacro (call function arguments)
 `(,function ,@args))

python會這樣做嗎,我只是以某種方式錯過了它? 如果沒有,那么有人有創意的解決方案嗎?

Python使用*進行參數擴展。 如果需要關鍵字參數,請使用**展開字典。 因此,您顯示的宏將是:

def call(function, args):
    return function(*args)

但是通常,Python式的方法是直接內聯調用。 實際上有一個名為apply()的函數可以精確地做到這一點,但是不推薦使用,因為內聯方式通常更清潔。

不,這在python中並不缺少。 SaltyCrane解釋了* args和** kwargs的用法比我更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM