2 回答

TA貢獻1848條經驗 獲得超2個贊
我認為這可以滿足您的所有要求,充分利用Python 的函數對象數據模型:
def my_func (b1, b2, b3, a1, a2, a3):
par_names = my_func.__code__.co_varnames[:6] # A tuple of strings of all param names
# It's ok to hard-code 6.
local_ns = locals()
par_vals = [local_ns[x] for x in par_names] # A list of all param values
another_func(par_vals[0], par_vals[3])
another_func(*par_vals[0:2]) # Unpacking first 2 params
def another_func(param1, param2):
print ("Inside another_func, (param1, param2) are:", param1, ",", param2)
my_func(10, 20, 30, 40, 50, 60)
輸出:
Inside another_func, (param1, param2) are: 10 , 40
Inside another_func, (param1, param2) are: 10 , 20
筆記:
對于參數名稱
b1
,無需遵循,b2
,等命名約定。適用于任意數量的參數(不僅僅是示例中的 32 個)。
即使某些參數是 kwargs 也能工作。
如文檔所述,
__code__.co_varnames
將包含參數名稱,后跟局部變量名稱。因此,我們對前 6 個元素進行索引,以僅獲取參數名稱。
添加回答
舉報