Несколько возможных типов возвращаемых значений
Если в вашей функции есть переменная, принимающая значения различных типов, можно использовать типы typing.Optional или typing.Union.
Используйте Optional, если значение будет либо определенного типа, либо исключительно None.
Подписывайтесь на канал 👉@pythonofff
Если в вашей функции есть переменная, принимающая значения различных типов, можно использовать типы typing.Optional или typing.Union.
Используйте Optional, если значение будет либо определенного типа, либо исключительно None.
Подписывайтесь на канал 👉@pythonofff
👍2
🐍 Как улучшить читаемость кода в Python?
Читаемость кода — это не просто прихоть, а залог продуктивности. Чем понятнее код, тем проще его поддерживать и меньше багов он содержит. Сегодня я расскажу несколько простых, но мощных техник, которые помогут сделать код чище.
1. Используйте говорящие имена переменных и функций
❌ Плохо:
✅ Хорошо:
Название должно передавать суть, а не заставлять читателя гадать.
2. Разбивайте код на функции
Код должен быть модульным. Если в функции больше 20 строк — подумайте, можно ли её разбить.
❌ Плохо (монолитная функция):
✅ Хорошо (логично разнесённый код):
3. Избегайте "магических чисел"
Числа в коде без пояснений — зло. Лучше использовать именованные константы.
❌ Плохо:
✅ Хорошо:
4. Следуйте PEP 8
Форматирование кода важно! Используйте линтеры, например
5. Документируйте код
Хороший код объясняет сам себя, но комментарии тоже нужны.
❌ Плохо:
✅ Хорошо:
Подписывайтесь на канал 👉@pythonofff
Читаемость кода — это не просто прихоть, а залог продуктивности. Чем понятнее код, тем проще его поддерживать и меньше багов он содержит. Сегодня я расскажу несколько простых, но мощных техник, которые помогут сделать код чище.
1. Используйте говорящие имена переменных и функций
❌ Плохо:
def f(a, b):
return a + b
✅ Хорошо:
def calculate_total_price(price: float, tax: float) -> float:
return price + tax
Название должно передавать суть, а не заставлять читателя гадать.
2. Разбивайте код на функции
Код должен быть модульным. Если в функции больше 20 строк — подумайте, можно ли её разбить.
❌ Плохо (монолитная функция):
def process_order(order):
tax = order.price * 0.2
total = order.price + tax
print(f"Total price: {total}")
order.status = "processed"
save_to_db(order)
✅ Хорошо (логично разнесённый код):
def calculate_tax(price):
return price * 0.2
def process_payment(order):
tax = calculate_tax(order.price)
total = order.price + tax
print(f"Total price: {total}")
return total
def finalize_order(order):
order.status = "processed"
save_to_db(order)
3. Избегайте "магических чисел"
Числа в коде без пояснений — зло. Лучше использовать именованные константы.
❌ Плохо:
discounted_price = price * 0.9
✅ Хорошо:
DISCOUNT_RATE = 0.1
discounted_price = price * (1 - DISCOUNT_RATE)
4. Следуйте PEP 8
Форматирование кода важно! Используйте линтеры, например
black
или flake8
, чтобы соблюдать стандарт.5. Документируйте код
Хороший код объясняет сам себя, но комментарии тоже нужны.
❌ Плохо:
# Умножаем x на 2
x = x * 2
✅ Хорошо:
# Удваиваем сумму для учёта бонусов
final_amount = amount * 2
Подписывайтесь на канал 👉@pythonofff
👍5
Абстракция словарей/множеств
С абстракциями списков (list comprehension) вы скорее всего сталкивались, но вот с абстракциями словарей/множеств (dict/set comprehension) — вряд ли. Они просты в использовании и так же эффективны.
Подписывайтесь на канал 👉@pythonofff
С абстракциями списков (list comprehension) вы скорее всего сталкивались, но вот с абстракциями словарей/множеств (dict/set comprehension) — вряд ли. Они просты в использовании и так же эффективны.
Подписывайтесь на канал 👉@pythonofff
👍2
Преобразование списка строк
Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти элементы в числа с плавающей запятой, мы перебираем список в цикле for. Каждый элемент мы преобразуем из строкового в вещественный. Делается это при помощи функции float().
Мы создаем пустой список number, куда добавим наши числа в формате float. Далее мы используем цикл for для добавления каждого элемента из исходного списка в список number. При этом перед добавлением мы передаем в функцию float() каждый элемент, чтобы преобразовать его из строки в число с плавающей запятой.
Подписывайтесь на канал 👉@pythonofff
Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти элементы в числа с плавающей запятой, мы перебираем список в цикле for. Каждый элемент мы преобразуем из строкового в вещественный. Делается это при помощи функции float().
Мы создаем пустой список number, куда добавим наши числа в формате float. Далее мы используем цикл for для добавления каждого элемента из исходного списка в список number. При этом перед добавлением мы передаем в функцию float() каждый элемент, чтобы преобразовать его из строки в число с плавающей запятой.
Подписывайтесь на канал 👉@pythonofff
👍3❤1
Как перевернуть список в Python с помощью срезов
Срезы работают аналогично функции range(), которую мы разобрали ранее.
Срез также включает в себе три параметра: start, stop и step.
Синтаксис выглядит следующим образом: [start:end:step].
Если вы хотите вывести все элементы, вы можете использовать один из двух следующих способов
Подписывайтесь на канал 👉@pythonofff
Срезы работают аналогично функции range(), которую мы разобрали ранее.
Срез также включает в себе три параметра: start, stop и step.
Синтаксис выглядит следующим образом: [start:end:step].
Если вы хотите вывести все элементы, вы можете использовать один из двух следующих способов
Подписывайтесь на канал 👉@pythonofff
👍2❤1👎1
Используйте объекты, которые поддерживают оператор with
Открыть файл и заблокировать фрагмент кода можно с помощью оператора with, но можно ли сделать это, пользуясь собственным методом? Да, можно реализовать протокол context manager, используя методы enter и exit
Подписывайтесь на канал 👉@pythonofff
Открыть файл и заблокировать фрагмент кода можно с помощью оператора with, но можно ли сделать это, пользуясь собственным методом? Да, можно реализовать протокол context manager, используя методы enter и exit
Подписывайтесь на канал 👉@pythonofff
Сила «однострочников» (One-Liners)
Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, однострочники Python — это то, что вам нужно.
Подписывайтесь на канал 👉@pythonofff
Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, однострочники Python — это то, что вам нужно.
Подписывайтесь на канал 👉@pythonofff
Как удалить пробелы из строки с помощью translate()
Функция translate() чем-то схожа с функцией replace(). Общая цель функций translate() и replace() – заменить определенный символ в заданной строке на другой символ. Однако определённые различия всё-таки есть.
Подписывайтесь на канал 👉@pythonofff
Функция translate() чем-то схожа с функцией replace(). Общая цель функций translate() и replace() – заменить определенный символ в заданной строке на другой символ. Однако определённые различия всё-таки есть.
Подписывайтесь на канал 👉@pythonofff
Как сделать POST-запрос
Мы используем запрос POST для добавления новых данных в REST API. Данные отправляются на сервер в формате JSON, который выглядит как словарь Python. Согласно документации Fake Store API, у продукта есть следующие атрибуты: title (название), price (цена), description (описание), image (изображение) и category.
Подписывайтесь на канал 👉@pythonofff
Мы используем запрос POST для добавления новых данных в REST API. Данные отправляются на сервер в формате JSON, который выглядит как словарь Python. Согласно документации Fake Store API, у продукта есть следующие атрибуты: title (название), price (цена), description (описание), image (изображение) и category.
Подписывайтесь на канал 👉@pythonofff
❤2
Как перевернуть список в Python с помощью метода .reverse()
При использовании данного встроенного метода в Python список изменяется сразу же. Это означает, что изменяется исходный порядок данного списка.
Первоначальный порядок элементов исходного списка изменяется и тут же обновляется.
Подписывайтесь на канал 👉@pythonofff
При использовании данного встроенного метода в Python список изменяется сразу же. Это означает, что изменяется исходный порядок данного списка.
Первоначальный порядок элементов исходного списка изменяется и тут же обновляется.
Подписывайтесь на канал 👉@pythonofff
👍3
Создание таблиц
Супер классной библиотекой является PrettyTable. Она позволяет мега быстро создать красивую таблицу для вывода в консоль. Если вы где-то учитесь или же часто нужно демонтировать информацию, то рекомендуем сохранить название этой библиотеки.
Работать с ней просто. Нужно лишь создать объект на основе PrettyTable и далее поместить в него название рядов и сами ряды.
Таблицу можно даже выровнять по определенному краю, а также можно указать сортировку по определенному полю.
Подписывайтесь на канал 👉@pythonofff
Супер классной библиотекой является PrettyTable. Она позволяет мега быстро создать красивую таблицу для вывода в консоль. Если вы где-то учитесь или же часто нужно демонтировать информацию, то рекомендуем сохранить название этой библиотеки.
Работать с ней просто. Нужно лишь создать объект на основе PrettyTable и далее поместить в него название рядов и сами ряды.
Таблицу можно даже выровнять по определенному краю, а также можно указать сортировку по определенному полю.
Подписывайтесь на канал 👉@pythonofff
👍7
Красивая консоль
Зачастую вся информация в консоли - это скучный белый или же черный текст. Согласитесь, такое и читать не интересно. Благо в питоне есть библиотека TermColor.
За счет этой библиотеки мы быстро можем настроить какие именно стили будут применены к тексту в консоли
Подписывайтесь на канал 👉@pythonofff
Зачастую вся информация в консоли - это скучный белый или же черный текст. Согласитесь, такое и читать не интересно. Благо в питоне есть библиотека TermColor.
За счет этой библиотеки мы быстро можем настроить какие именно стили будут применены к тексту в консоли
Подписывайтесь на канал 👉@pythonofff
👍6
Редактор видео
Все еще в поиске крутого видео редактора? Зачем что-то искать, когда есть Python и замечательная библиотека MoviePy :)
За счет MoviePy вы можете перевернуть видео, можете его обрезать, можете изменить количество FPS и можете выполнить ещё много других действий.
Мы создадим программу, что будет принимать видео и отделять от него звук, который будем сохранять в качестве отдельного файла.
Подписывайтесь на канал 👉@pythonofff
Все еще в поиске крутого видео редактора? Зачем что-то искать, когда есть Python и замечательная библиотека MoviePy :)
За счет MoviePy вы можете перевернуть видео, можете его обрезать, можете изменить количество FPS и можете выполнить ещё много других действий.
Мы создадим программу, что будет принимать видео и отделять от него звук, который будем сохранять в качестве отдельного файла.
Подписывайтесь на канал 👉@pythonofff
👍3
Три открытых урока для Python-разработчиков
Если уже освоили базовый Python и хотите прокачаться в веб-разработке — не пропустите бесплатные занятия от OTUS.
📺 Web-фреймворк на Python за час | 26 марта в 20:00 (Мск)
Разберём, как работает WSGI, создадим минимальный фреймворк с маршрутизацией и поймём, что лежит в основе Django.
→ Записаться
📺 Знакомство с Django REST Framework: создание API на Django | 17 апреля в 20:00 (Мск)
Узнаете, как строить REST API на Django, сделаете первый шаг к полноценным бэкенд-сервисам.
→ Записаться
📺 Асинхронное Django-приложение: работа с асинхронными ORM и views | 23 апреля в 20:00 (Мск)
Освоите asyncio в Django, научитесь писать асинхронные представления и взаимодействовать с БД.
→ Записаться
Записывайтесь на открытые уроки и получите практические знания из первых рук. Все занятия проводятся онлайн, а ведут их опытные разработчики!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Если уже освоили базовый Python и хотите прокачаться в веб-разработке — не пропустите бесплатные занятия от OTUS.
📺 Web-фреймворк на Python за час | 26 марта в 20:00 (Мск)
Разберём, как работает WSGI, создадим минимальный фреймворк с маршрутизацией и поймём, что лежит в основе Django.
→ Записаться
📺 Знакомство с Django REST Framework: создание API на Django | 17 апреля в 20:00 (Мск)
Узнаете, как строить REST API на Django, сделаете первый шаг к полноценным бэкенд-сервисам.
→ Записаться
📺 Асинхронное Django-приложение: работа с асинхронными ORM и views | 23 апреля в 20:00 (Мск)
Освоите asyncio в Django, научитесь писать асинхронные представления и взаимодействовать с БД.
→ Записаться
Записывайтесь на открытые уроки и получите практические знания из первых рук. Все занятия проводятся онлайн, а ведут их опытные разработчики!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Обработка ошибок во время выполнения
Это самый полезный совет для программистов, работающих с Python. Вы можете устранить ошибку и избавить программу от сбоев во время выполнения.
Подписывайтесь на канал 👉@pythonofff
Это самый полезный совет для программистов, работающих с Python. Вы можете устранить ошибку и избавить программу от сбоев во время выполнения.
Подписывайтесь на канал 👉@pythonofff
👍3❤1
Транспонирование 2d-массива
Этот лайфхак покажет, как выполнить транспонирование 2d-массива с помощью метода zip.
Подписывайтесь на канал 👉@pythonofff
Этот лайфхак покажет, как выполнить транспонирование 2d-массива с помощью метода zip.
Подписывайтесь на канал 👉@pythonofff
❤4
Поиск подстроки
Этот пример будет полезен для поиска подстроки в строке. Я реализую его двумя способами, позволяющими не писать много кода.
Подписывайтесь на канал 👉@pythonofff
Этот пример будет полезен для поиска подстроки в строке. Я реализую его двумя способами, позволяющими не писать много кода.
Подписывайтесь на канал 👉@pythonofff
👍3
Список дат из диапазона
Этот код получает две даты (начальную и конечную) и создаёт список из дат между ними, включая начальную и исключая последнюю.
Для получения дней между начальной и конечной датой используется datetime.timedelta.days.
Подписывайтесь на канал 👉@pythonofff
Этот код получает две даты (начальную и конечную) и создаёт список из дат между ними, включая начальную и исключая последнюю.
Для получения дней между начальной и конечной датой используется datetime.timedelta.days.
Подписывайтесь на канал 👉@pythonofff
👍3
Сжатие списка
Этот скрипт удаляет «ложные» значения (False, None, 0 и пустую строку ' ') из списка. Используется встроенная функция filter(): c параметром None на первом месте она удалит из списка lst все значения, которые не вернут True по умолчанию.
Проверить вручную какое-либо значение на True/False можно с помощью функции bool(): bool(0) вернёт False, но bool('0') уже будет True, так как это непустая строка.
Подписывайтесь на канал 👉@pythonofff
Этот скрипт удаляет «ложные» значения (False, None, 0 и пустую строку ' ') из списка. Используется встроенная функция filter(): c параметром None на первом месте она удалит из списка lst все значения, которые не вернут True по умолчанию.
Проверить вручную какое-либо значение на True/False можно с помощью функции bool(): bool(0) вернёт False, но bool('0') уже будет True, так как это непустая строка.
Подписывайтесь на канал 👉@pythonofff
Как преобразовать строку в число (int) в Python
Чтобы преобразовать строку в целое число, можно использовать встроенную функцию int().
Функция принимает в качестве параметра исходную строку, которую вы хотите преобразовать, и возвращает целочисленный эквивалент переданного вами значения.
Общий синтаксис выглядит примерно следующим образом: int("str")
Подписывайтесь на канал 👉@pythonofff
Чтобы преобразовать строку в целое число, можно использовать встроенную функцию int().
Функция принимает в качестве параметра исходную строку, которую вы хотите преобразовать, и возвращает целочисленный эквивалент переданного вами значения.
Общий синтаксис выглядит примерно следующим образом: int("str")
Подписывайтесь на канал 👉@pythonofff
🔥5