Senior Python Developer
43.6K subscribers
2.09K photos
4 videos
1 file
526 links
№ 4931117861
Публикуем интересные/полезные фичи/библиотеки языка.

По вопросам сотрудничества: @adv_and_pr

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Передача функции в другую функцию

В Python есть возможность передать функцию в качестве аргумента, чтобы потом использовать её внутри другой функции.

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

Функция bool() преобразует объект в логическое значение. Язык также позволяет производить логические операции and, or, not с числами.

При преобразовании чисел к логическим значениям все числа кроме нуля преобразовываются в True. Лишь 0 переходит в False.

Логические операции с числами работают согласно таблицам истинности операторов.
Как вернуть двоичный код целого числа?

Используйте функцию bin().
Лимит рекурсии

В Python иногда возникает RecursionError во время создания рекурсивных алгоритмов (даже при решении простых университетских задач), однако с помощью модуля sys можно изменить максимальную глубину рекурсии, чтобы избежать появления этой ошибки.

Но надо помнить, что делать это — опасное занятие, ибо каждый новый вызов занимает достаточно много памяти. В реальных проектах нужно стараться использовать не рекурсию, а обычные циклы.
Beautiful soup

Когда вы вытаскиваете HTML с какого-то сайта, то сначала проводите его разбор и отсекаете все ненужное. Beautiful Soup — это Python-библиотека по сбору данных из HTML и XML-файлов. В ней представлены простые методы для навигации, поиска и парсинга. Это очень мощная библиотека, которая умеет обрабатывать все виды HTML, даже если он сломан. Уж поверьте моему опыту, HTML ломается довольно часто, поэтому такая функция окажется как нельзя кстати.

Beautiful Soup парсит все, что захотите. С его помощью вы, например, можете вытащить все ссылки или найти заголовок таблицы, выделенный жирным. На первой картинке приведен HTML, а на второй - несколько примеров работы с ним. Документация доступна по ссылке.
Удаление красного, зеленого и синего канала из цветного изображения в Python

Чтобы удалить красный канал из цветного изображения, считайте изображение в массив BGR с помощью cv2.imread() и присвойте нули 2D-массиву, соответствующему красному каналу.

В этом примере мы удалим красный канал со следующего изображения.

Ознакомиться подробнее c удалением других каналов можно здесь.
Как вставить переменную в строку в Python?

В этом примере мы возьмем целые числа в переменных и попытаемся вставить несколько переменных внутри строки, используя форматированную строку.
Переворот изображения по вертикали

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

Ознакомиться подробнее можно здесь.
#вопросы_с_собеседований
Что значит *args, **kwargs? И зачем нам их использовать?

Мы используем *args, когда неуверены, сколько аргументов будет передано функции, или если хотим передать сохраненный список или кортеж аргументов функции.

**kwargs используется, когда мы не знаем, сколько аргументов ключевых слов будет передано, а также он может быть использован для передачи значений словаря в качестве аргументов ключевых слов. Идентификаторы args и kwargs необязательны, вы можете изменить их на другие, типа *другой **пример, но лучше использовать имя по умолчанию.
Ошибка отступа (IndentationError)

Эта ошибка похожа по духу на синтаксическую и является ее подвидом. Тем не менее она возникает только в случае проблем с отступами.
Скачиваем HTML-код страницы с помощью Python

С помощью следующего фрагмента кода мы можем с легкостью получить HTML-код страницы в интеренете.
Хэширование

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

Для хэширования значений есть встроенная (её не надо устанавливать или импортировать) функция hash(). Используется в основном для сравнения разных объектов — сравнивать хэши легче и выгоднее.

Однако изменяемые объекты по типу списков и словарей нельзя хэшировать — интерпретатор выдаст ошибку.

Кстати, есть две пасхалки. Хэш бесконечности равен первым цифрам числа Пи, а хэш Not a Number равен нулю.

А ещё бывают коллизии: например, хэши чисел -1 и -2 одинаковы.
#вопросы_с_собеседований
Какие нюансы есть в использовании чисел как ключей?

Числовые ключи в словарях подчиняются правилам сравнения чисел. Таким образом, int(1) и float(1.0) считаются одинаковым ключом. Однако из-за того, что значения типа float сохраняются приближенно, не рекомендуется использовать их в качестве ключей.
Как выполняется обработка исключений в Python?

Для обработки исключений Python предоставляет конструкцию из трех слов: try, except и finally.

Синтаксис выглядит примерно так:
try:
# попробовать сделать это
except:
# если блок try не сработал, попробовать это
finally:
# всегда делать это


На картинке представлен упрощенный пример такой конструкции. Здесь блок try терпит неудачу, поскольку мы не можем складывать целые числа со строками. Блок except устанавливает val = 10, а затем блок finally выводит complete.
Сортировка данных CSV файла на Python 🐍

В этом коде мы открываем файл input.csv, считываем его содержимое в список data, сортируем список по первому столбцу и записываем отсортированные данные в новый файл output.csv.
Скачиваем HTML-код страницы с помощью Python

С помощью следующего фрагмента кода мы можем с легкостью получить HTML-код страницы в интернете.
Метод partition()

Метод partition() разбивает строку по заданной подстроке. После этого результат возвращается в виде кортежа. При этом подстрока, по которой осуществлялась разбивка, тоже входит в кортеж.
Форматируемые шаблоны строк

Модуль string из стандартной библиотеки содержит интересный класс Template, который позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.

Такой способ появился ещё в Python 2.4, как замена %-форматированию, но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
Оператор continue

Оператор continue в Python используется для перевода управления программой в начало цикла. Он пропускает оставшиеся строки кода внутри цикла и запускает следующую итерацию.

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

Обратите внимание на вывод приведенного выше кода, значение 2 пропущено, потому что мы предоставили условие if с помощью оператора continue в цикле for. Когда он соответствует заданному условию, тогда управление передается в начало цикла for, и оно пропускает значение 2 из кода.
Календарь в Python

Существует замечательный встроенный модуль calendar, позволяющий работать с датами. Некоторые возможности, такие как проверка, високосный ли год, показаны на картинке. Для углубления в работу с модулем можно ознакомиться с документацией.