我正在嘗試這個可以替代開關的小代碼。但我得到了我的錯誤。Python中的開關替代
def main(x):
x = x.split(' ')
return {'Function1' : Function1(x),
'Function2' : Function2(x),
}[x[0]]
def Function1(x):
var1 = x[0]
var2 = x[1]
def Function2(x):
print x[0]
main("Function1 10")
現在上面的代碼工作正常。問題是如果我傳遞Function2作爲鍵沒有任何參數主函數它會自動進入Function1並拋出列表超出範圍錯誤。
main("Function2")
在此先感謝。
在'Function2'你沒有定義任何變量'x'但你正在訪問它的第一個元素 – mirosval
@mirosval它不會進入fun2本身。 – taz
與字典相比,您可以做什麼與其他語言的常見開關語句不同。也許在你想要做什麼以及如何做什麼的時候提出問題。將值映射到函數可以通過映射(你在做什麼)來完成,不需要switch語句。 –