Скрытая сила ключевого слова or
. this -> return datas if len(datas) > 0 else None -> to this -> return datas or None
#convert this to return datas if len(datas) > 0 else None #this (Super simple) return datas or None ---------------------------------------------- #convert this to return {(user["user_id"] if user["user_id"] != None else user["email_id"]) : "<user_detail>" for user in data} #this (0% complexity) return {(user["user_id"] or user["email_id"]) : "<user_detail>" for user in data}
Привет, мир! Добро пожаловать! Python действительно очень удобен для пользователя, и мы должны с этим согласиться.
Но есть некоторые функции, о которых мы не знаем, потому что никто не собирается учить вас, когда их использовать, и это более удобно для чтения.
Сегодня мы рассмотрим ключевое слово or
. Опять же, это ключевое слово, поэтому оно встроено. Я не знаю о поддержке python2.x, потому что я не использовал python2.x.
some_var = var_a or var_b
что значит:
some_var= valid value or var_b
это или вернет var_a
, если оно истинно, или len › 0 или нет. Ничего другого не вернет var_b
давайте посмотрим на реальный пример 1:
query_pramas = request["qsp"] or {}
теперь приведенный выше пример получает query_string_params из URL-адреса (запроса), поэтому, если не передано значение query_string_params, будет назначен пустой {}
dict
пример 2:
def do_something(): #fetched datas from database #need to pass the data to another function (if len(datas) > 0 else pass the None) return datas or None
если вы видите выше, мы не рассчитали длину. если мы хотим использовать одну строку, если решить одну, то
return datas if len(datas) > 0 else None
Если вы сравните приведенные выше коды, вы сможете понять разницу и более удобна для пользователя, чем одна строка, если еще.
Я закончу этот пост одним последним примером, который я использовал:
return {user["user_id"] or user["email_id"] : "<user_detail>" for user in data}
Теперь это вернет dict данных с ключом user id
as, если user_id
равно None, в качестве ключа будет использоваться email_id
, это предотвратит исключение None-TypeError.
Хорошо, давайте использовать силу or
во всех местах, прокомментируйте, если вы использовали or
очень по-другому и как. Пока 👋