[英]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.