python在寫類似switch邏輯時
switch = {
"a":print(1),
"b":print(2),
"c":print(3)
}
try:
switch["c"]
except KeyError as e:
pass
這個的輸出是 1 2 3 而不是預期的 3 ,求問這是什么原因
1 回答

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
不要在 dict 里面用 print。
print 函數會在賦值給 switch 之前就執行了,所以打印出了 1 2 3,而實際上,此時 switch 是 {"a": None, "b": None, "c": None}
,因為 print 的返回值是 None。
你可以這樣寫:
switch = {"a": 1, "b": 2, "c": 3}
try:
print(switch["c"])
except KeyError as e:
pass
添加回答
舉報
0/150
提交
取消