Объяснить поведение python
Недавно, в следствие факапа, столкнулся с таким поведением.
examples = {
"settings": [1, 2, 3],
"params": ["abc", "abb"]
}
# фак ап был здесь (for example in) (Думал там if)
for example in examples.get("settings") and examples.get("params"):
'''Для примера просто выведем, что получится в результате вызова'''
print(example)
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Итак, у вас получилось, что цикл for собрался итерироваться по результату выражения examples.get("settings") and examples.get("params") которые оба списки. В Питоне не пустой список считается как True в логических выражениях.
А если левая часть операции and истина, то вычисляется правая часть, и она и будет результатом для выражения список and список. Потому по факту у вас всегда происходили итерации по второму списку, потому что первый был не пустой.
Вот несколько примеров результатов операций and и or над списками.
>>> [] and ['second']
[]
>>> ['first'] and ['second']
['second']
>>> [] or ['second']
['second']
>>> ['first'] or ['second']
['first']