我正在製作一個程序,該程序有一個主菜單,要求用戶輸入一個選項並將其存儲在整數option1
中,該字符在字典options
中查找。然後運行相應的功能。下面的代碼工作如果函數沒有參數:使用Python中的字典調用帶參數的函數
options = {0 : FunctionZero, # Assign functions to the dictionary
1 : FunctionOne,
2 : FunctionTwo,
3 : FunctionThree}
options[option1]() # Call the function
如果函數有參數作爲()
部分承擔的功能沒有參數上面的代碼不工作,但我嘗試以下,其存儲函數的名稱和參數在字典中的元組:
options = {0 : (FunctionZero,""), # FunctionsZero, FunctionOne
1 : (FunctionOne,""), # and FunctionTwo have no parameters
2 : (FunctionTwo,""),
3 : (FunctionThree,True)} # FunctionThree has one parameter
if options[option1][1] == "": # Call the function
options[option1][0]()
else:
options[option1][0](options[option1][1])
此代碼似乎很好地工作,但我不知道是否有更好的方法來做到這一點,特別是如果函數需要幾個參數?在其他語言如C#中,我可能會使用switch或case語句(不在Python中),並且我避免使用if...elif
語句。
這正是我需要的!順便說一句,你錯過了選項[2]值的逗號。 – harryscholes
@h_s好眼睛!固定,謝謝;很高興它有幫助。 – jonrsharpe