Объяснить поведение 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']
→ Ссылка