簡體   English   中英

在Python中調用函數並僅傳遞它期望的參數

[英]Call a function in Python and pass only the arguments it expects

如何調用函數並僅傳遞它所期望的參數。 例如,我說我有以下功能:

func1 = lambda a: True
func2 = lambda a, b: True
func3 = lambda c: True

我想要一些能夠成功調用這些函數的Python代碼,而不會通過傳遞意外的參數來TypeError

kwargs = dict(a=1, b=2, c=3)
for func in (func1, func2, func3):
    func(**kwargs)  # some magic here

當我定義它們時,我對函數添加**kwargs並不感興趣。

您可以使用inspect.getargspec()

from inspect import getargspec
kwargs = dict(a=1, b=2, c=3)
for func in (func1, func2, func3):
    func(**dict((name, kwargs[name]) for name in getargspec(func)[0]))

那么,根據您對變量參數和關鍵字參數的確切要求,結果會有所不同,但您可能希望從inspect.getargspec(func)

暫無
暫無

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

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