TGINSIGHT CHAT
Python Academy
@python_academy
EducaciónPython Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Posts recientes
Pág. 84 de 85 · 1,014 posts
Explicit Conversion Flag Флаг явного преобразования используется для преобразования значения поля format перед его непосредственным форматированием. Это поле можно использовать для переопределения поведения format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования: !r – преобразует значение в строку, используя функцию repr() !s – преобразует значение в строку, используя функцию str() В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s – без кавычек (в более удобном для чтения виде). #repr#str#format
Делаем планировщик задач К моему удивлению, далеко не все знают про пакет schedule, который позволяет планировать задачи и повторять их через промежуток времени. Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще schedule не требует внешних зависимостей и сам в целом легковесный. Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах. #schedule
Hashtags
Проверка отношения классов Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции isinstance(object, classinfo) и issubclass(class, classinfo). instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса. issubclass — проверяет является ли класс наследником другого класса. Данные функции зачастую применяются в ООП. #isinstance#issubclass
Hashtags
Импорт антигравитации Достаточно старая, но все же интересная пасхалка: если в коде прописать import antigravity, то при запуске скрипта откроется страница в браузере, которая содержит шутку про то, насколько же всё-таки язык простой. #пасхалки
Hashtags
Метод join у строк У строк есть полезный метод str.join(), который принимает на вход итерируемый объект, элементами которого также должны быть строки. Как результат получаем новую строку, которая является объединением всех элементов. При этом они разделены строкой, к которой изначально применялся метод. Проще говоря, если применить к строке этот метод, то она станет разделителем для элементов в новой строке. #строки
Hashtags
Интересная пасхалка Модуль __future__ позволяет подключать функционал из будущих версий языка. Например, можно попробовать импортировать фигурные скобки как в си-подобных языках. Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно — исходный код этого модуля. Оказывается, интерпретатор CPython сначала запускает файл future.c, когда встречается импорт этого модуля. А само это исключение реализовано на этой строчке. #пасхалки
Hashtags
Валидаторы данных Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно. Модуль validators позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок. Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом. #validators
Hashtags
Копируем объекты При присваивании переменной значения другой переменной, как правило, новый объект не создается, а копируется ссылка уже на существующий. Если использовать функцию copy из стандартной библиотеки, то новый объект будет создан, но его ссылки на другие объекты останутся такими же. В случае с deepcopy произойдет рекурсивное копирование. Например, при таком копировании списка все его элементы также скопируются как новые объекты. #copy
Hashtags
Специальная переменная __name__ Когда интерпретатор Python читает файл, то сначала он устанавливает несколько специальных переменных (пример). Одной из таких переменных является __name__. Если скрипт был запущен напрямую, то в переменную присваивается значение __main__, в случае импорта — название модуля. Типичный пример использования такой переменной — создание точки входа в программу. Про это уже был ранее пост. Вообще атрибут __name__ по умолчанию также ставится всем классам и функциям. #переменные
Hashtags
Получаем список переменных Функция locals() возвращает словарь переменных из текущего пространства имён. Ключи словаря — названия переменных, а значения — это их значения. С помощью похожей функции globals() можно получить все переменные конкретного модуля в таком же виде. Еще обратите внимание на результат второй функции: там много разных переменных, которые мы явно не объявляли — про некоторые из них скоро расскажем. #переменные
Hashtags
Создаем бесконечный итератор Функция cycle() из itertools принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента. Но если вы проходитесь циклом по такому итератору, то важно предусмотреть выход из цикла, иначе он станет бесконечным (как у нас в первом случае на картинке). Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта. #itertools
Hashtags
3 интересных функции в random Этот пост более для тех, у кого есть соответствующий бэкграунд и кто хочет знать про random больше среднего. betavariate() — используется для получения случайного числа с плавающей запятой от 0 до 1 на основе бета-распределения (применяется для статистических расчетов). gauss() — генерирует случайное число с плавающей запятой на основе распределения Гаусса (используется в теории вероятности). paretovariate() — возвращает случайное число с плавающей запятой на основе распределения Парето (используется в теории вероятности). Кстати, можете посмотреть на графиках результаты вызова этих функций по 100к раз тут, тут и тут. #random
Hashtags