Python tricks | Хитрости Питона
5.8K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Синтаксис append() в Python

В этом примере:
1 Создаётся список my_list с элементами 1, 2, 3.
2 Метод append() добавляет элемент 4 в конец списка.
3 Вывод my_list показывает, что новый элемент успешно добавлен в конец списка.

🔗 Python tricks
Напишите функцию, которая принимает на вход список словарей, представляющих собой записи о студентах. Каждый словарь содержит ключи 'name', 'age' и 'grade'. Функция должна возвращать средний возраст студентов и среднюю оценку. Напишите код и объясните, как бы вы обработали случаи, когда в словарях отсутствуют ключи или значения не являются числами.

Объяснение:
В этой функции мы проходим по списку словарей, проверяем наличие ключей 'name', 'age' и 'grade' и их типы. Если данные валидны, добавляем их к общей сумме, чтобы затем посчитать средние значения.

🔗 Python tricks
Объясните, что делает данная функция (первая картинка), оптимизируйте ее, и напишите тесты для проверки ее корректности.

Что делает функция:

Данная функция some_function принимает список чисел input_list, проходится по каждому элементу в списке, проверяет, является ли элемент четным числом, и если да, то добавляет квадрат этого числа в новый список result.

Оптимизация кода:
Мы можем использовать list comprehension для более компактной записи этой функции:
def optimized_function(input_list):
return [item ** 2 for item in input_list if item % 2 == 0]

Также, если вам необходимо, чтобы функция работала для любого итерируемого объекта, вы можете добавить проверку на четность элемента и заменить на использование генератора:
def general_function(iterable):
return (item ** 2 for item in iterable if item % 2 == 0)

Тестирование:
Теперь напишем тесты для проверки корректности функции. Мы можем использовать библиотеку unittest для этого (вторая картинка).

🔗 Python tricks
💻 Определяем ip адрес своего компьютера

Этот код использует библиотеку requests для отправки HTTP-запроса к веб-сервису ipify, который предоставляет API для определения публичного IP-адреса пользователя. Код написан в форме функции get_public_ip, что делает его удобным для повторного использования.

Использование блока try-except обеспечивает обработку исключений, которые могут возникнуть при запросе (например, проблемы с подключением к интернету). Если запрос успешен, функция возвращает IP-адрес, иначе возвращает сообщение об ошибке.

🔗 Python tricks
Преобразование изменяемых данных в неизменяемые

Изменяемые данные (например, словари или списки) — это структуры, к которым могут быть добавлены новые значения.

Неизменяемые данные, в противоположность изменяемым, после создания остаются неизменными. Посмотрите, как можно преобразовать изменяемый тип данных в неизменяемый.

🔗 Python tricks
Применение функции ко всем элементам в списке

Этот прием полезен в тех случаях, когда нужно применить функцию ко всем элементам списка, а не к каждому отдельно.
🔗 Python tricks
Snowballstemmer

Библиотека Snowballstemmer предоставляет функциональность стемминга, то есть преобразования слов в их базовую форму.

Эта библиотека реализует алгоритм Портера, который является одним из наиболее известных алгоритмов стемминга. Snowballstemmer поддерживает алгоритмы стемминга для 15 языков, включая русский.

*Стемминг применяется в поисковых системах для расширения поискового запроса пользователя, является частью процесса нормализации текста.

🔗 Python tricks
IceCream

IceCream — это библиотека, которая предоставляет простой и эффективный способ отладки кода. Вместо того чтобы использовать функцию print() для отладки, вы можете использовать функцию ic() из библиотеки IceCream, которая позволяет вам инспектировать переменные, выражения и выполнение программы с помощью одного простого вызова функции.

В этом примере кода вывод ic| указывает на то, что это вывод от IceCream, а result: 6 — имя переменной и ее значение.

IceCream может быть использован в любом месте, где требуется отладка кода: веб-разработка, научные вычисления, анализ данных и т.д.

🔗 Python tricks
Добавление новых элементов в список

Как мы знаем, метод append() добавляет новый элемент в конец списка.

При этом длина списка увеличивается на 1, и новый элемент занимает позицию с индексом, который на единицу больше, чем индекс последнего элемента до добавления.

🔗 Python tricks
Создание списка через цикл с использованием append()

С основой разобрались. Теперь посмотрим, как создать обновление списка с несколькими значениями. Не использовать же нам сотню функций для поочередного добавления элементов, в конце концов. Используем старый-добрый цикл.

В примере ниже на каждой итерации цикла переменная i содержит текущее значение из диапазона range(5), то есть значения от 0 до 4 (включительно).

🔗 Python tricks
Тернарный оператор: Поместите If и Else в одну строку кода

Многие языки программирования имеют тернарные операторы. Синтаксис Python для этого просто помещает if и else в одну строку.

Если мы реализуем ту же логику, что и выше, без тернарного оператора, потребуется несколько строк кода.

🔗 Python tricks
string.find

Метод find() возвращает индекс первого вхождения подстроки (если она найдена). Если не найдена, возвращается -1. При желании ты можешь задать, откуда нужно начать поиск и до какого индекса.

🔗 Python tricks
Лямбда-функции для определения небольших анонимных функций

Лямбда-функция, называемая анонимной функцией, представляет собой метод, позволяющий легко определить небольшую функцию в Python, чтобы сделать ваш код аккуратнее и короче.

Распространённым применением лямбда-функций является их использование для определения метода сравнения для встроенной функции sort()

🔗 Python tricks
Контекстный менеджер: Автоматическое закрытие ресурсов

Как мы знаем, после того, как файл был открыт и обработан, важно быстро закрыть его, чтобы освободить ресурсы памяти. Пренебрежение этим может привести к утечке памяти или даже к сбою нашей системы.

Как показано выше, оператор “with” является ключевым для контекстных менеджеров Python. Пока мы открываем файл через него и обрабатываем файл под ним, файл будет автоматически закрыт после обработки.

🔗 Python tricks
Объясните, что такое обработка исключений в Python, и предоставьте пример кода, демонстрирующий использование блока try-except.

Обработка исключений в Python позволяет программисту обрабатывать и управлять ошибками в коде. Блок try содержит код, который может вызвать исключение. Если исключение происходит, выполнение кода переходит к блоку except, который содержит обработчики конкретных типов исключений.
Блок else выполняется, если в блоке try не возникло исключение.
Блок finally выполняется всегда, независимо от того, произошло исключение или нет. Этот блок используется, например, для освобождения ресурсов.

В примере на картинке в функции divide_numbers представлен пример деления двух чисел с использованием блока try-except. В случае деления на ноль выводится сообщение об ошибке. Если переданы нечисловые значения, программа сообщает об ошибке типа. В блоке else выводится сообщение об успешном выполнении операции, а в блоке finally выводится сообщение, которое всегда выполняется.

🔗 Python tricks
У вас есть список словарей, представляющих информацию о книгах. Каждый словарь содержит поля «название» (title), «автор» (author) и «год выпуска» (year). Напишите функцию на Python, которая принимает такой список книг и возвращает словарь, в котором ключами являются года выпуска, а значениями — списки книг, выпущенных в этот год. Книги в каждом списке должны быть упорядочены по алфавиту по названию.

Решение:

1. Используем defaultdict(list), чтобы автоматически создавать пустой список для каждого года.
2. Книги сортируем по названию перед группировкой, чтобы списки книг в каждом году были упорядочены по алфавиту.
3. Проходим по отсортированным книгам и добавляем их в соответствующие списки годов в словаре.



🔗 Python tricks
Как получить размер папки с помощью Python?

Чтобы получить размер каталога, пользователь должен пройти по всей папке и добавить размер каждого файла, присутствующего в этой папке, и покажет общий размер папки.

Другие способы решить данную задачу можно найти здесь.

🔗 Python tricks
NetworkX

NetworkX — это библиотека Python для анализа сложных сетей. Она предоставляет структуры данных для работы с графами (сетями) и реализует множество алгоритмов для анализа и визуализации сетевых данных.

Она может использоваться в различных областях, таких как социальные, биологические, транспортные, компьютерные сети и многих других.

🔗 Python tricks
Переводим текст с английского на русский язык и преобразуем его в голосовое сообщение

Для перевода текста с английского на русский и преобразования его в голосовое сообщение, вы можете использовать библиотеки googletrans для перевода и gTTS (Google Text-to-Speech) для синтеза речи.

pip install googletrans==4.0.0-rc1
pip install gtts

🔗 Python tricks