[英]Python: how to pass argument name using variable
我正在使用的模塊有許多用不同的參數名定義的函數或多或少用於相同的目的:
def func1(start_date):
....
def func2(startdate):
....
def func3(s_date):
....
def func4(sdate):
....
它們出現在參數列表的不同位置(在上面簡化的情況下,它們都在位置1,但實際情況並非如此)。
我想編寫一個包裝器,它可以通過從函數名到參數名的字典將實際的start_date
傳遞給這些函數中的任何一個:
def func2arg_name():
return {'func1' : 'start_date',
'func2' : 'startdate',
'func3' : 's_date',
'func4' : 'sdate' }
那么實際的包裝器:
f2a = func2arg_name()
def func(func_name, sdate):
locals()[func_name](f2a[func_name] = sdate)
func('func1', '20170101')
顯然這不起作用。 基本上f2a [func_name]不被識別為合法關鍵字。 有沒有人知道如何做到這一點,即使用變量傳遞參數名稱? 注意func1
到func4
是外部定義的,不能更改。
創建一個以參數名稱為鍵的dict,並使用unpack運算符傳遞它:
locals()[func_name](**{f2a[func_name]: sdate})
請參閱Python教程中的解壓縮參數列表 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.