Just Python
11.2K subscribers
3.66K photos
11 videos
3.66K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

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

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Получаем имя текущей функции

Иногда при отладке или логировании нужно узнать, в какой функции мы находимся. Новички могут прописывать имя функции вручную, но Python позволяет получить его автоматически с помощью inspect.

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

Итог:
С помощью inspect можно автоматически получать имя текущей функции, что упрощает логирование и повышает читаемость кода.

#theory // Just Python
Узнаем курс рубля за определенную дату

forex-python позволяет получать данные о курсе валют в определённое время и конвертировать одну валюту в другую.

Установка пакета - pip install forex-python.

Текущая программа позволяет нам узнать курс рубля относительно многих других валют мира за 28 апреля 2010 года(в 10 часов 53 минут 30 секунд).

Документация библиотеки находиться здесь.

#theory // Just Python
Random Forest

Random Forest — это не одно дерево, а сразу много. Каждый “деревце” в лесу обучается на случайной части данных и с использованием случайного поднабора признаков. Когда нужно предсказать класс или значение, все деревья голосуют, и побеждает большинство (в классификации) или усреднённый ответ (в регрессии). В результате снижается переобучение по сравнению с одиночным деревом, а сама модель меньше зависит от случайных шумов.

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

Обрати внимание на пример. n_estimators определяет, сколько деревьев. max_depth — максимальная глубина каждого дерева. random_state — фиксируем сид, чтобы результат был воспроизводим. Можно добавлять class_weight='balanced', если классы несбалансированы.

#theory // Just Python
Проверяем тип переменной

В процессе разработки важно понимать, с каким типом данных вы работаете. Многие новички используют print(type(x)), чтобы узнать тип переменной, но Python предлагает более универсальный способ — isinstance().

Функция isinstance() проверяет, принадлежит ли объект к определённому типу (или группе типов). Это особенно удобно при написании условий и обработке разных данных.

Итог:
isinstance() — удобный инструмент для проверки типов, особенно когда нужно обрабатывать переменные разных типов в одном блоке кода.

#theory // Just Python
The Экономист
⚡️ Разыгрываем сразу 3 новеньких iPhone 16! Отличный вариант получить свежайшие гаджеты просто за то, что читаете нас! Для участия нужно: 1. Быть подписанным на The Экономист, Москоубизнес и Доллар по тридцать. 2. Нажать «Участвую!» под этим постом. …
⚡️Уже ЗАВТРА мы подведём итоги масштабного розыгрыша среди наших подписчиков — победители получат сразу три новеньких iPhone 16!

Самое время подписаться на @economica, @mosbusy и @ruble30 и нажать «Участвую!» под этим постом, если вы ещё этого не сделали. Результаты уже 25 апреля в 18:00!
Please open Telegram to view this post
VIEW IN TELEGRAM
Антипаттерн недели: except: без указания типа исключения

В Python использование except: без типа перехватывает все ошибки, включая системные (KeyboardInterrupt, SystemExit). Это может затруднить отладку и скрыть критические проблемы.

Всегда явно указывайте тип исключения.

#theory // Just Python
Forwarded from Сегодня в тренде
Агентство Spektr выпустило карту крупнейших российских b2b-экосистем 2025 года. В топе по охватам по-прежнему сервисы Сбера и Яндекса.

Сбер лидирует в финансах, медицине и недвижимости. Яндекс — в мобильных сервисах, поиске и голосовых помощниках.

Исследование показывает, как эти экосистемы адаптируются под нужды людей, запускают новые продукты и меняют рынок.

@trends
Получаем путь к текущему файлу

При работе с файлами часто нужно знать, где находится сам исполняемый скрипт. Новички могут указывать путь вручную, но Python умеет получать его автоматически с помощью встроенного модуля os.

Функция os.path.abspath(__file__) возвращает абсолютный путь к текущему файлу, а os.path.dirname() — директорию, в которой он находится.

Итог:
С помощью os.path.abspath(__file__) и os.path.dirname() можно динамически определять путь к текущему файлу и его директории — это удобно для настройки путей и работы с файлами без хардкода.

#theory // Just Python
phonenumbers — это небольшая библиотека, для получения информации о номере телефона.

Что она умеет?

Данная библиотека имеет возможность узнать геолокацию номера телефона (страна, город), абонентом какого оператора он является, пройти проверку на валидацию и другое.

Сверху приведены два примера по валидации данных, но они возвращают разные значения

Почему так происходит?

Причина в том, что метод is_possible_number() быстро угадывает действительность телефонного номера, проверяя длину анализируемого номера, в то время как метод is_valid_number() выполняет полную проверку, проверяя длину, префикс телефонного номера и регион.

При итерации по большому списку телефонных номеров использование phonenumbers.is_possible_number() даст более быстрые результаты по сравнению с phonenumbers.is_valid_number() . Но, как мы видим здесь, эти результаты не всегда правильны. Так что используйте на свой страх и риск.

Ставится командой pip install phonenumbers
Краткая документация(с pypi) и примеры кода здесь.

#theory // Just Python
captcha — простая библиотека, которая генерирует заданную вами капчу!

Что умеет библиотека captcha?

Несомненно, библиотека слишком маленькая, но она всё же она имеет полезные функции, например: генерировать капчу ввиде фотографии(как показано на примере выше) и генерировать аудио капчу (аудиофайл).

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

Результат примера здесь.

Библиотека, кстати, досихпор обновляется, поэтому проблем быть не должно :3

Стоит отметить, что не нужно называть файл к примеру captcha.py , ведь тогда Python запутается и выдаст ошибку :(

Ставится командой pip install captcha
Краткая документация(с pypi) и примеры кода здесь!

#theory // Just Python
dateutil — модуль, который предоставляет продвинутую обработку даты и времени на Python.

Почему стоит выбрать dateutil?

Работать с датой и временем с помощью встроенного модуля datetime в большом проекте — непростая задача. Учитывая количество изменений, которые требуется применить, при получении сырых данных.

Для этих целей был создан модуль dateutil. Он предоставляет расширения для методов, уже имеющихся в datetime.

Dateutil разбит на несколько подклассов: easter, parser, relativedelta, rrule, tz и некоторые другие.

Стоит отметить, что dateutil зависит от модуля datetime. Он использует его объекты.

Подкласс relativedelta предназначен для применения к существующей дате и времени и может заменять определенные компоненты этой даты и времени или представлять интервал времени.

В его основу положена характеристика великолепной работы М.-А. Лембург в своем расширении mx.DateTime. Однако обратите внимание, что этот тип НЕ реализует тот же алгоритм, что и его работа. НЕ ожидайте, что он будет вести себя как аналог mx.DateTime.

Это значит, что вы можете добавлять дни, месяца и года к текущему объекту datetime. Также есть возможность работать с интервалами, как это показано на примере выше :)

Ставится командой pip install python-dateutil
Документация и примеры кода здесь.

#theory // Just Python
importlib.invalidate_caches

importlib.invalidate_caches() очищает внутренний кэш путей поиска модулей. Это полезно при динамическом создании или удалении .py файлов, особенно в тестах, плагинах и REPL-средах, когда модуль может появиться в процессе выполнения

#theory // Just Python
faulthandler.dump_traceback_later

faulthandler.dump_traceback_later планирует автоматический вывод стека вызовов через заданное количество секунд. Это полезно для отладки зависших программ, бесконечных циклов или неожиданных блокировок

#theory // Just Python
qrcode — довольно простой модуль, для генерации qr cod'ов в Python!

Разберёмся с формулировками:

Метод QRCode.add_data() добавит данные к текущему объекту qr. Чтобы добавить новые данные путем замены предыдущего содержимого в том же объекте, сначала используйте метод QRCode.clear().

QR-код — это виртуальная база данных в виде незамысловатого значка и хранит в себе около 4200 символов, в последствии QR-код можно отсканировать и получить информацию заложенную в нём. Аббревиатура QR (quick response) переводится как быстрое реагирование.

Примеры

На примере выше мы добавляем данные с помощью метода qr.add_data , определеляем переменную img и сохраняем наш qr-код.

Очищаем qr-код и добавляем новые данные :3

У модуля qrcode есть множество методов для кастомизации qr-кодов. Например в телеграмме тоже есть кастомизация qr-кодов(для входа в аккаунт или отправки qr-cod'a своего аккаунта. Так же модуль довольно гибок, поэтому настроить его можно полностью под себя :)

Ставится командой pip install qrcode
Документация и примеры кода здесь.

#theory // Just Python
reduce() — функция, которая последовательно применяет функцию-аргумент к элементам списка и возвращает единое значение.

Чем отличается reduce от map и filter?

reduce() не возвращает новый список, основанный на функции и итерационный, который мы передали. Вместо этого он возвращает одно значение.

Как работает reduce?

reduce() работает вызывая функцию |, которую мы передали для первых двух элементов последовательности. Результат, возвращаемый функцией |, используется в другом вызове функции вместе со следующим (в данном случае третьим) элементом.

Этот процесс повторяется до тех пор, пока мы не пройдем через все элементы последовательности.

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

Подробнее про функцию reduce вы можете почитать здесь :3

#theory // Just Python
PrettyTable — довольно полезный модуль для создания простых таблиц и вывода их в терминал или текстовый файл.

Модуль PrettyTable был вдохновлен таблицами ASCII, используемыми в оболочке PostgreSQL.

Возможности модуля PrettyTable:

• Установка ширины заполнения столбца, выравнивание текста или границы таблицы.
• Сортировка данных.
• Выбор отображения столбцов и строк в окончательном выводе.
• Чтение данных из CSV, HTML или курсора базы данных.
• Вывод данных в ASCII или HTML.

Пример(см. выше)

Для начала, необходимо создать экземпляр PrettyTable(), чтобы потом добавлять в него некоторые данные. Далее необходимо установить имена полей, используя атрибут PrettyTable.field_names, а затем с помощью списка добавить их(данные) за один раз, используя метод PrettyTable.add_rows() .

Добавить данные можно и построчно, используя метод PrettyTable.add_row() , но в данном примере мы будем использовать однострочный метод.

Модуль, несмотря на свою простоту — популярен, и имеет 7.3 миллиона скачиваний в месяц.

Ставится командой pip install prettytable
Документация и примеры кода здесь :3

#theory // Just Python
Работаем с переменными окружения в Python

Переменные окружения часто используются для хранения конфиденциальных данных — например, API-ключей, логинов, паролей. Вместо того чтобы хардкодить их в код, безопаснее читать их через os.environ.

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

Итог:
Используйте os.environ.get() для безопасного доступа к переменным окружения — это защищает ваш код от утечек данных и упрощает настройку.

#theory // Just Python