我有一個以 *args 作為參數的函數。我也有一個清單。根據條件,我要么想將列表傳遞給函數,要么在函數調用中使用星號表達式解壓列表。我必須多次調用此函數并傳遞列表,無論是否解壓。但是決定列表是否需要解包或不僅需要在開始時評估一次的條件。我想避免編寫許多 if 語句檢查來評估條件,只是為了確定我是否需要 *。有沒有辦法動態地做到這一點?還是有我沒有想到的更好的方法?我希望我可以在函數中應用邏輯,但不幸的是我無法修改函數。以下是我嘗試過但失敗的一些示例:if condition: parameters = *listelse: parameters = list...func(parameters)...func(parameters)...func(parameters)...if condition: parameters = '*list'else: parameters = 'list'...func(parameters)...func(parameters)...func(parameters)...編輯:添加了更多 func 調用以更清晰。
2 回答

慕運維8079593
TA貢獻1876條經驗 獲得超5個贊
與您正在做的事情相反:您不能將列表“解包”到變量中,這是沒有意義的,但是您可以將參數包裝到列表中并始終將其解包。
那是:
if condition:
parameters = list
else:
parameters = [list]
...
func(*parameters)
...
func(*parameters)
...
func(*parameters)

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
您可以嘗試使用 lambda:
if condition:
new_func = lambda params: func(*params)
else:
new_func = lambda params: func(params)
...
new_func(parameters)
new_func(parameters)
new_func(parameters)
添加回答
舉報
0/150
提交
取消