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

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

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Форматирование больших чисел

Python с версии 3.6 позволяет записывать большие числа, используя разделитель — нижнее подчеркивание. Эта фишка очень помогает при разработке приложений, так можно сразу понять, какое у вас число, не разделяя его в уме на сотни и тысячи.
Условие внутри print

Мы можем добавить простое условие для вывода функции print. True выведется в случае, если a = True. В ином случае выведтся False.
Узнаём версию языка Python

Для этого используем компонент sys, нам нужен параметр version_info, благодаря которому мы можем узнать точную версию языка, которая используется.
Необычное использование else

Else можно использовать в циклах, вынося его за цикл. Это позволит вывести результат цикла в случае отсутсвия результатов. Как в нашем примере.
Узнаём кодировку текста

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

Пакет chardet как раз был создан для работы с кодировками. Его метод detect выдает предполагаемую кодировку с точностью от 0 до 1.

В примере на картинке мы сделали запрос к серверу, получили ответ, взяли его содержимое и проверили кодировку через метод detect.
Случайный элемент массива

Библиотека random годится не только для генерации случайных чисел, в ней также есть набор функций для множества случайных событий.

Одна из таких — функция choice, позволяющая выбрать случайный элемент итеррируемого объекта. Принимает в качестве аргумента объект последовательности.
Генерируем пароли и токены

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

В частности, secrets следует использовать по умолчанию вместо генератора псевдослучайных чисел модуля random, который в свою очередь предназначен для моделирования и симуляции, а не для защиты или криптографии.

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

Подробнее про модуль secrets можно почитать здесь.
Используем примитив синхронизации — мьютекс

Мьютекс позволяет синхронизировать работу нескольких потоков. Это базовый примитив синхронизации. У него есть два состояния — он может быть свободный или заблокированный. Следующий поток не сможет исполнить print() до тех пор, пока мьютекс не будет разблокирован предыдущим.
Многопоточность в Python

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

В Python, как и во многих современных языках программирования есть собственная поддержка многопоточности. Есть две основные библиотеки для организации потоков — thread и threading.
Загрузка изображения с matplotlib

matplotlib позволяет загружать изображения, строить графики, анализируя цвета и многие другие параметры изображения. В данном примере показан базовый функционал загрузки. Изображение image.png должно находиться в папке с вашим скриптом.
Комбинируем графики

Matplotlib может легко комбинировать графики для отображения. Достаточно их просто объявить. Также указываем их положения с помощью функции subplot(). Выставляем имена, чтобы было наглядно, и выводим итоговое изображение.
🕵 Пишем кейлоггер на Python для Windows за 5 минут

Руководство по созданию кейлоггера на Python, который записывает нажатия клавиш с клавиатуры и отправляет их по электронной почте или сохраняет в файл журнала.

https://proglib.io/sh/boCJveYIVu
eval() и exec()

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

В строке 3 функция eval() считывает входную строку как выражение Python, вычисляет ее и присваивает результат переменной b. В строке 7 функция exec() считывает входную строку, как оператор Python и выполняет ее.
Что плохого в коде на картинке?

Ответ:
В Python нет объявлений переменных, поэтому он должен сам определить их область действия. Если внутри функции имеется обращение к переменной, то она считается локальной. Переменная count выше является глобальной, поэтому код выбрасывает ошибку.
Создание своего первого графического интерфейса

Библиотека Tkinter предустановлена в Python в качестве стандартного модуля, поэтому нам не нужно устанавливать что-либо для ее использования.

Сначала импортируем Tkinter и создадим окно, в котором мы зададим его название.

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

Label
Чтобы добавить текст в наш предыдущий пример, мы создадим lbl с помощью класса Label.
Затем мы установим позицию в окне с помощью метода grid. Опять же: если он не будет вызван, текст не будет отображаться!
Добавление виджета Button

Начнем с добавления кнопки в окно. Кнопка создается и добавляется в окно так же, как и метка.

Обратите внимание, что мы помещаем кнопку во второй столбец окна, что равно 1. Если вы забудете и поместите кнопку в том же столбце, который равен 0, он покажет только кнопку.

Реакция на нажатие кнопок
Для начала мы запишем функцию clicked(), которую нужно выполнить при нажатии кнопки.

Затем мы передадим аргументу command нашу функцию. Обратите внимание: мы пишем clicked, а не clicked() с круглыми скобками. Потому что мы не вызываем, а передаем функцию.
Настройка размера и шрифта текста

Вы можете задать шрифт текста и его размер. Также можно изменить стиль шрифта. Для этого передайте в аргумент font.

Обратите внимание, что параметр font может быть передан любому виджету. Для того, чтобы поменять его шрифт, он применяется не только к Label, но и к Button.

Изменение цвета текста и фона у Button

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

Заметьте, что в данном коде кнопка ничего не делает.
Библиотека newspaper3k

Часто приходится парсить статьи? Первое, что приходит на ум, — BeautifulSoup, но newspaper3k дает огромное преимущество.

Он даёт возможность извлекать статьи и связанные с ней мета-данные. То есть, ты можешь получить html-код, авторов и текст статьи. И не придется самому распарсивать статью.

Библиотеку необходимо установить:
pip install newspaper3k