TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки
Python Заметки avatar

TGINSIGHT POST

Post #14

@pythonotes

Python Заметки

Views417Post view count
PostedJan 1101/11/2020, 09:00 AM
Post content

Post content

Не удержался и решил показать пример как можно записать код из поста про if-else еще короче, буквально в одну строку! value = any((get_new_value(i) for i in array)) or get_default() Тут стоит знать две особенности функций any/all и операторов or/and. 1.Эти операторы не возвращают тип bool Они только делают преобразование данных в этот тип на момент сравнения. 2. Как именно устроена логика? В какой момент сработает return? any() - возвращает первый элемент, который преобразовался в True или последний элемент all() - возвращает первый элемент, который преобразовался в False или последний элемент or и and делают аналогично, только для двух операндов Но все они возвращают именно исходное значение, а не bool! Ну а наличие генератора позволяет не выполнять лишних операций, только до момента нахождения нужного значения. Если значение так и не найдено, оператор or запустит функцию get_default(). PS. Несмотря на возможность записать таким образом, я призываю всегда отдавать предпочтение понятности кода, а не краткости. Если про понятность не понятно, делаемimport thisи читаем, читаем, читаем... #tricks