Можно ли вызвать функцию Python с логическим утверждением в качестве параметра? - PullRequest
1 голос
/ 20 мая 2019

Я обнаружил странный вызов функции при чтении файла models.py в запросах python библиотеки. Я попытался найти некоторые объяснения в официальной документации python, но, к сожалению, без каких-либо успехов. Возможно, вы знаете, почему такой случай возможен или как использовать логические операторы при вызове функций? Это часть хорошей практики? Пожалуйста, найдите код ниже.

fields = to_key_val_list(data or {})
files = to_key_val_list(files or {})

1 Ответ

1 голос
/ 20 мая 2019

Такие вещи очень часто используются в языке программирования Python

fields = to_key_val_list(data or {}) # this means, that if boolean value of data variable is False, use empty dict/or anything you want.

Также ,,,

class Foo:

    def __init__(self, data: list):
        self.data = data or 'abc' # if data will be empty list self.data will become 'abc'

Вы можете использовать и также. и / или оба доступны.

val = a or b or c # in the chain, if a is False, value of val would become b. if be is False also, then c
val = a and b and c # "and" checks values of whole chain. if a is False, so val will have same value as a. if all is true in chain, the last element value will be inside val.
...