Я пытался что-то кодировать с использованием переключателя Python, смоделированного в dict, как предложено в: Замены для оператора switch в Python? [Второй ответ, Ник]
Когда я тестировал, по какой-то причине вызывались все функции внутри, пробовал простой код, чтобы увидеть, что не так, и проблема повторилась.См .:
def switch(f):
print('Switch got: ', f)
var = {
1: func1(),
2: func2(),
3: func3()
}.get(f,False)
return var
def func3():
fb = 'Func3 called'
print(fb)
return fb
def func1():
rsp = 'Func1 called'
print(rsp)
return rsp
def func2():
rsp = 'Func2 called'
print(rsp)
return rsp
var = switch(1)
print(var)
Мое ожидаемое возвращение было просто:
Switch got: 1
Func1 called
Вместо этого я получил:
Switch got: 1
Func1 called
Func2 called
Func3 called
Func1 called
Что я получил от этого, так это то, что Python, кажется, работаеткаждый функционал внутри dict перед вызовом правильного ключа (1 в примере).
Это ожидаемое поведение в Python?
Есть ли способ обойти, где вызывается только функция, соответствующая клавише?