Я пытаюсь определить различные лямбда-функции в словаре Python. Я знаю, что, вероятно, лучшее, что можно сделать, - это иметь только одну лямбда-функцию в части «значение» элемента словаря и управлять подслоями внутри определенной функции, но, тем не менее, я не понимаю, почему этот код не работает так, как я хочу :
def a():
print('a')
def b():
print('b')
def c():
print('c')
def d():
print('d')
condition = True
dict = {
'foo': lambda: a() if condition else lambda: b(),
'bar': lambda: c() if condition else lambda: d()
}.get('foo', lambda: print('not found'))()
если мы установим условие = False, код не будет печататься b, он ничего не будет делать (кажется) .. почему?
Вместо этого, если мы попытаемся использовать словарь без определений лямбда-функций, он будет работать так, как я ожидал:
dict2 = {
'foo': 4 if condition else 5,
'bar': 6 if condition else 7
}.get('foo', -1)
dict2 будет 5.
Кто-то может объяснить мне, почему определение, возвращенное в первом случае, не работает?
Заранее спасибо!