[英]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.