所以我試圖使用字典作為臨時 switch/case 陳述句(Python3.8);但我遇到的問題是字典運行其中的每個函式,而不是將其與傳遞的鍵匹配。
這是一個代碼示例:
# function blocks
def USA():
print "System is in USA\n"
return "USA"
def UK():
print "System is in the UK\n"
return "UK"
def RUS():
print "System is in RUS\n"
return "RUS"
def JAP():
print "System is in JAP\n"
return "JAP"
def location(local):
return {'USA' : USA(),
'UK' : UK(),
'RUS' : RUS(),
'JAP' : JAP(),
}[local]
local = "USA"
country = location(local)
但回傳的是:
"System is in USA"
"System is in the UK"
"System is in RUS"
"System is in JAP"
因此,顯然存在一些匹配問題,并且正在呼叫每個函式;這促使我嘗試各種不同的變化,包括:
def location(local):
return {'USA' : USA(),
'UK' : UK(),
'RUS' : RUS(),
'JAP' : JAP(),
}.get(local, "NA")
我試圖在哪里.get()找到正確的字典專案。但無濟于事 - 我似乎無法弄清楚為什么它沒有正確匹配以及如何解決這個問題。
uj5u.com熱心網友回復:
當您宣告字典時:
{'USA' : USA(),
'UK' : UK(),
'RUS' : RUS(),
'JAP' : JAP(),
}
請注意,函式有括號()。這意味著當您創建字典時,您正在呼叫函式。你應該做
func_dict = {'USA' : USA,
'UK' : UK,
'RUS' : RUS,
'JAP' : JAP,
}
然后
func_dict[local]()
它只呼叫對應的函式local。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429011.html
上一篇:如何使用字典鍵作為函式變數名?
