Скрытая сила ключевого слова 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 очень по-другому и как. Пока 👋