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

Ссылка: @Portal_v_IT

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

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

РКН: clck.ru/3MnbSc
Download Telegram
Возврат нескольких значений

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

Здесь возвращается кортеж. С тем же эффектом можно было бы написать return (name, birthdate).

Это нормально для ограниченного количества возвращаемых значений. Но все, что превышает 3 значения, должно быть помещено в класс (data).

#theory // Just Python
codecs.iterdecode

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

#theory // Just Python
Как быстро перевернуть строку?

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

Этот приём позволяет перевернуть строку за одну строку: text[::-1] разворачивает строку с конца к началу.

#theory // Just Python
Получаем имя текущей функции

Иногда при отладке или логировании нужно узнать, в какой функции мы находимся. Новички могут прописывать имя функции вручную, но 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