亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法動態使用星號表達式?

有沒有辦法動態使用星號表達式?

蠱毒傳說 2022-07-05 16:55:55
我有一個以 *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)


查看完整回答
反對 回復 2022-07-05
?
守著星空守著你

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)


查看完整回答
反對 回復 2022-07-05
  • 2 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號