Туда его
ну и выкинул матч кейс соответственно)
Можно ещё lang = language or default_lang
экономим память, не создаем лишние переменные 👽
Синтаксис позволяет написать чуть элегантнее (имхо), то почему бы не воспользоваться возможностью?
Да в пятоне же не переменные, а что-то типа ссылочных имён, которые на объекты ссылаются, из-за чего можно всё красиво расписывать, не опасаясь за память
А объекты на которые ссылаются, где по твоему находятся?
Если на один объект будет ссылаться 2 или более ссылки, то ничего страшного
Я не об этом спросил
да это прикол был прошу прощения, что взбудоражил вас написать большое сообщени)
Эта "элегантность" уже немного устарела и схему с x = x or y документация предлагает заменять на x = x if x else y как более универсальное и настраиваемое решение.
А, ну если хочешь чтобы я тебя учил, то лучше гуглом воспользуйся 👍👍👍👍🏿👍🏿
ну раз вы настаиваете)
Ну сливайся, ладошки
Не понимаю, неужели я должен за бесплатно обучать студента 🤔🤔🤔 Если хочешь что-то узнать, то используй первоисточники. Я сейчас про арену начну бред нести, так лучше используй проверенные источники
Кстати, language может быть, например, пустой строкой?
нет, language прилетает либо строкой (например "ru_RU"), либо None
мне стало интересно, а к чему вы вопрос этот задали?
lang = "" lang = lang or "something" Если пустая строка — валидный вариант, это будет вести себя неправильно. Если у тебя есть жёсткое условие, что строка пустой быть не может (или что пустая строка эквивалентна None), то вариант с or имеет право на жизнь. В противном случае нужно проверять явным образом.
Как по мне, вариант с enum бы решил все проблемы и был бы более удобным 🤔🤔🤔🤔
enum тут вообще перпендикулярен и к исходному вопросу отношения не имеет.
Ну почему же: легче было бы проверять на валидность языка, иначе кидать дефолт. Где-то видел вариант с матчкейс красивый
В задаче — валидация входного параметра по сути. enum появляется после валидации (ну или в результате).
Если описать модель валидных параметров языка (enum'ом), то можно одной конструкцией проверять. Или дело вообще в существовании параметра? Ну даже так эту проблему решает моё решение
class Fruit(Enum): Apple = 4 Orange = 5 Pear = 6 @classmethod def has_value(cls, value): return value in cls._value2member_map_ print(Fruit.has_value(5)) # True print(Fruit.has_value(7)) # False
и добавил бы охулиард новых
да, я в принципе, так и думал я проверял, у меня гарантировано прилетает либо None, либо не пустая строка
Не без этого)
Языки читаются из базы данных. Ты хочешь их продублировать и запихать в модели. Понятно, что они уже сейчас на кой-то чёрт захардкожены, но это не повод заменять легко исправляемую проверку на вхождение в список доступных языков на нечто более монолитное. Зачем?
Ну по факту 🤔🤔 даже если использовать enum типы для хранения в бд, то энивей при изменении придется и их менять 😂😂 ☝️🤔🤔 Не прочел всю ветку 😢😢
Не x = x if x is not None else something? Такое больше к булям, а к другим объектам сравнение на нон, разве нет?
В зависимости от задачи. Часто нужно исключить любые falsy объекты (0, "", [], и т. д.). В этом случае правильно просто if x. Если только None или что-то конкретное исключить, то задавать это конкретное условие. Потому я и написал про универсальность и настраиваемость. С or такого сделать нельзя и это было одним из аргументов, почему появился синтаксис x if y else z.
Обсуждают сегодня