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
Перемешиваем строку

Для того чтобы перемешать символы в строке вы можете воспользоваться методом random.sample().
Копирование объектов

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

Если же использовать copy.deepcopy(), то получатся "настоящие" копии объекта и всех его ссылок.
Избегайте вложенных циклов с помощью product

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

К счастью, в Python всегда можно избежать вложенных циклов с помощью встроенной функции product().

Например, у нас есть следующая программа, которая содержит трехуровневые вложенные циклы for.

Чтобы сделать код более аккуратным и чистым, мы можем использовать функцию product(), которая находится в модуле itertools, для оптимизации кода.
Пишем простого эхо-бота на Python

Инструкция по созданию бота:
1) Заходим в бота @BotFather
2) запускаем его(/start)
3) выбираем команду /newbot
4) даем имя боту
5) после этого придумываем ему юзернейм
6) и наконец-таки получаем токен для нашего бота, который вставляем в свой код.

Теперь заходим в среду написания кода, вставляем наш код с картинки(для особо ленивых код будет в комментариях), вставляем свой токен и запускаем программу, после чего заходим в телеграм, находим в поиске вашего бота и запускаем его.

Перед запуском программы необходимо установить пакет telebot(pip install telebot).

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

В 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-код страницы в интернете.