Разъяснивший Python
8.16K subscribers
2.45K photos
40 videos
30 files
2.3K links
Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
Проверка на дубликаты

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

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

Разъяснивший Python
👎2👍1
Управление компьютером с помощью жестов руки!

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

Как это работает?
MediaPipe Hands отслеживает положение руки.
Определяются координаты указательного пальца.
Курсор двигается в соответствии с движениями руки.

Где это можно использовать?
Бесконтактное управление компьютером (например, в презентациях).
Игры с управлением руками (виртуальная мышь).
Регулировка громкости (например, сжатие руки — уменьшение громкости).

Разъяснивший Python
Невидимые заметки в файле!

Этот лайфхак позволяет скрывать текстовые сообщения внутри файлов, так что их нельзя будет увидеть обычными способами!

Как это работает?
Мы используем невидимые символы Unicode для сокрытия текста прямо в файле. Такие символы не отображаются в редакторах, но остаются в файле!

Как это работает?
Встроенные в текст невидимые символы Unicode (\u200b, \u200c) кодируют биты скрытого сообщения.
Файл выглядит обычным текстом, но содержит невидимую информацию.
Сообщение можно извлечь с помощью специального кода.

Разъяснивший Python
👎1
Сжатие списка

Этот скрипт удаляет «ложные» значения (False, None, 0 и пустую строку ' ') из списка. Используется встроенная функция filter(): c параметром None на первом месте она удалит из списка lst все значения, которые не вернут True по умолчанию.

Проверить вручную какое-либо значение на True/False можно с помощью функции bool(): bool(0) вернёт False, но bool('0') уже будет True, так как это непустая строка.

Разъяснивший Python
Исключение из очереди стека

Класс collections.deque() это обобщение стеков и очередей и представляет собой двустороннюю очередь. Двусторонняя очередь deque() поддерживает поточно-ориентированные, эффективные по памяти операции добавления и извлечения элементов последовательности с любой стороны с примерно одинаковой производительностью O(1) в любом направлении.

Разъяснивший Python
Функция next() для генераторов

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

Однако вместо этого можно использовать next(). Next берёт итератор, который будет хранить текущую позицию в памяти и перебирать список в фоновом режиме.

Разъяснивший Python
👍1
Как группирововать смежные списки

Группировку смежных списков, разумеется, легко осуществить в цикле for, особенно, используя zip(), но это далеко не самый лучший способ. Чтобы сделать это проще и быстрее, напишем лямбда-выражение с zip, которое сгруппирует смежные списки.

Разъяснивший Python
1👍1
Тренарный оператор

Иногда элементы if настолько просты, что кажется излишним тратить на них строки. В этом случае имеет смысл применить тернарный оператор if/else

Интерпретатор выполняет выражение Y, если объект X – истина, и Z, если X – ложь. Не злоупотребляйте этим выражением, если X, Y, Z имеют сложную форму записи.

Тернарный оператор можно использовать не только для переменных, но и для функций

Разъяснивший Python
Бот для управления умным домом

Данный код позволяет управлять умным домом через Telegram, включая и выключая устройства по командам. Можно включать свет, розетки и кондиционеры. Также получишь данные с различных датчиков (температура, влажность). Тебе нужно устройство, которое будет получать команды. Подойдет Raspberry PI или ESP8266.

👉Читать

Разъяснивший Python
Как красиво вывести список

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

Метод join преобразовывает список в строку, рассматривая каждый элемент как строку. Разделителем является та строка, для которой был вызван join. Он достаточно умен, чтобы не вставлять разделитель после последнего элемента.

Дополнительный бонус: join работает линейное время. Никогда не создавайте строку складыванием элементов списка в цикле for: это не просто некрасиво, это занимает квадратичное время!

Разъяснивший Python
👎1
dataclasses.astuple()

dataclasses.astuple() преобразует объект dataclass в неизменяемый кортеж, что удобно для сериализации и работы с неизменяемыми структурами.

Разъяснивший Python
Глобально уникальный идентификатор в Python

Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).

Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.

Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.

Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.

Разъяснивший Python
Антипаттерн недели: Ловушка с оператором is при сравнении строк

В Python оператор is проверяет, ссылаются ли две переменные на один и тот же объект в памяти, а не равны ли их значения. Это может приводить к неожиданным ошибкам при сравнении строк.

Используйте == для сравнения значений строк, а не is.

Разъяснивший Python
Создание самоуничтожающегося Python-скрипта!

Этот код удаляет себя после выполнения, оставляя систему без следов!

Как это работает?
Скрипт выполняет свои задачи.
Определяет своё местоположение в файловой системе.
Удаляет себя после выполнения.

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

Разъяснивший Python
❤‍🔥1
sys._current_frames()

sys._current_frames() позволяет получить стеки вызовов всех активных потоков в программе. Это полезно для отладки многопоточных приложений.

Разъяснивший Python
inspect.getgeneratorstate()

inspect.getgeneratorstate() позволяет определить текущее состояние генератора. Это полезно при отладке и анализе работы генераторов в Python, чтобы понимать, активен ли генератор, завершён или ожидает ввода.

Разъяснивший Python
sys.setswitchinterval()

sys.setswitchinterval() позволяет управлять частотой переключения потоков в Python, изменяя временной интервал между переключениями контекста. Это полезно для настройки многопоточных программ.

Разъяснивший Python
inspect.currentframe()

inspect.currentframe() позволяет получить текущий стек вызовов и информацию о выполняемом коде. Это полезно для отладки, логирования и анализа исполнения программы.

Разъяснивший Python
Объединение списков без цикла

Как бы вы решили задачу объединения списков разной длины без обхода элементов цикла?

Пусть и менее краткий, но более эффективный способ – применение модуля itertools

Заметим, что при работе с последовательностями многие полезные решения находятся в модулях стандартной библиотеки collections (контейнерные структуры данных) и itertools (операции над последовательностями). Внимательное прочтение документации модулей освободит вас от многих часов придумывания собственных «велосипедов».

Разъяснивший Python
Запускаем код, спрятанный в изображении!

Этот лайфхак позволяет прятать Python-код в PNG-картинке и запускать его прямо из неё!

Как это работает?
Берём картинку и вписываем код в её пиксели, меняя последний бит цвета.
Сохраняем картинку, которая выглядит как обычное изображение.
Читаем картинку, достаём скрытый код и запускаем его!
Где это можно использовать?
Передача скрытых скриптов через изображения.
Прятать код в файлах для креативного программирования.
Эксперименты с техникой стеганографии.

Разъяснивший Python