簡體   English   中英

將參數作為關鍵字傳遞給新的 function

[英]Passing parameter as keyword to new function

假設我有以下代碼:

def my_func(a, b, param="foo"):
    if param == "foo":
        obj = other_func(foo=(a, b))
    elif param == "bar":
        obj = other_func(bar=(a, b))
    elif param == "test":
        obj = other_func(test=(a, b))

有沒有更 Pythonic 的方式將參數轉換為新 function 的關鍵字? 這個方法在幾個 if 語句之后變得乏味。 像這樣的東西會更好(只是例子):

def my_func(a, b, param="foo"):
    obj = other_func(param=(a, b))

經過大量測試,我發現最好的如下:

def my_func(a, b, param="foo"):
    temp_str = f"{param}=(a, b)"
    obj = eval("other_func("+temp_str+")")

但是我只聽說過關於 eval() 的壞事,我並不完全理解。

使用**運算符解壓 dict 並將其項目作為關鍵字 arguments 傳遞給 function:

def my_func(a, b, param="foo"):
    obj = other_func(**{param: (a,b)})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM