Бесконечность
Вообще
Строковые литералы
Такой прием может быть полезен в коде, где требуется хранить в переменной самое большое или самое маленькое числовое значение для дальнейшего сравнения.
#float
Вообще
float
является крайне интересным типом данных и не перестает удивлять своими особенностями. Про значение Not a Number
мы уже писали, а вот сегодня поговорим про infinity
. Строковые литералы
'inf'
и 'infinity'
можно конвертировать в float
, и в результате получается значение бесконечности. Для отрицательной "бесконечности" нужно поставить знак минуса перед словом. Такой прием может быть полезен в коде, где требуется хранить в переменной самое большое или самое маленькое числовое значение для дальнейшего сравнения.
#float
Фармишь дропы вручную? Не совершай ошибку!
Многие криптаны фармят ретродропы своими силами, вручную. Но ошибки в транзах, фишинг и потерянное время могут обойтись слишком дорого. Если у тебя уже есть профитные кейсы, пора подумать об автоматизации.
Освой кодинг и навсегда забудь о надоедливой рутине. На канале AIO Study всему научат на пальцах. Топовые разработчики из команды hodlmod.eth научат:
— Сокращать время на рабочие процессы до пары кликов
— Защищаться от скама
— Масштабировать «ферму»
Доверять незнакомым кодерам — идти на high-risk. Лучше выучиться самому, это несложно.
Подпишись и выбери технологии.
Многие криптаны фармят ретродропы своими силами, вручную. Но ошибки в транзах, фишинг и потерянное время могут обойтись слишком дорого. Если у тебя уже есть профитные кейсы, пора подумать об автоматизации.
Освой кодинг и навсегда забудь о надоедливой рутине. На канале AIO Study всему научат на пальцах. Топовые разработчики из команды hodlmod.eth научат:
— Сокращать время на рабочие процессы до пары кликов
— Защищаться от скама
— Масштабировать «ферму»
Доверять незнакомым кодерам — идти на high-risk. Лучше выучиться самому, это несложно.
Подпишись и выбери технологии.
ООП: композиция
Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.
Как правило, в этом случае объект одного из классов (в примере выше это
Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора.
В таком случае необходимо использовать слабые ссылки из модуля
#классы #ооп
Композиция — это отношение, при котором объекты одного класса связаны с объектами другого. Такой способ организации взаимодействия между классами также называется ассоциацией.
Как правило, в этом случае объект одного из классов (в примере выше это
Salary
) является полем другого (Employee
). Сложного здесь, как вы видите, ничего нет.Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора.
В таком случае необходимо использовать слабые ссылки из модуля
weakref
, о котором поговорим позже.#классы #ооп
FastAPI
FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.
Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).
Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.
FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.
#фреймворки #web
FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.
Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).
Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.
FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.
#фреймворки #web
Генерация QR кодов
Сегодня покажем создание QR кодов. Для этого нам понадобится модуль
Все максимально просто, за нас по сути все делает уже написанный модуль.
Выше на картинке мы сделали простую функцию
За создание картинки отвечает метод
Получившийся QR код можете посмотреть тут.
#qrcode #pillow
Сегодня покажем создание QR кодов. Для этого нам понадобится модуль
qrcode
, который используется для создания изображений с QR кодом. Все максимально просто, за нас по сути все делает уже написанный модуль.
Выше на картинке мы сделали простую функцию
generate
, которая принимает какую-то информацию и название файла, в который нужно сохранить результат в виде QR кода. За создание картинки отвечает метод
qrcode.make
, который возвращает нам изображение в формате PIL.Image
, а после этого мы его сохраняем в нужном нам файле. Получившийся QR код можете посмотреть тут.
#qrcode #pillow
Универсальный парсер статей
Пакет
Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Но точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница. Поэтому в некоторых случаях результат может отличаться от ожиданий.
#парсер #newspaper3k
Пакет
newspaper3k
позволяет парсить статьи и извлекать из них заголовки, текст, дату публикации, имена авторов и много другой информации.Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Но точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница. Поэтому в некоторых случаях результат может отличаться от ожиданий.
#парсер #newspaper3k
FastAPI
FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.
Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).
Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.
FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.
#фреймворки #web
FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.
Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).
Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.
FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.
#фреймворки #web
Получаем и задаем лимит рекурсии
В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает
Но с помощью модуля
И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
#рекурсия #лимиты
В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает
RecursionError
во время создания рекурсивных алгоритмов. Но с помощью модуля
sys
можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти. И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
#рекурсия #лимиты
Отлавливаем баги с assert
При выполнении инструкции
Но если попробовать выполнить инструкцию
Исключения
Также не нужно, к примеру, обрабатывать пользовательский ввод и пытаться обработать исключение
Если в вашем коде будет очень много
#исключения #assert
При выполнении инструкции
assert
с логическим выражением, результат которого равен True
, ничего не произойдет.Но если попробовать выполнить инструкцию
assert
с логическим выражением, которое равно False
, то будет сгенерировано исключение AssertionError
.Исключения
AssertionError
предназначены скорее для отладки. При написании программ на этапе разработки мы можем видеть, что делаем что-то не так (например, передали в метод некорректное значение). Также не нужно, к примеру, обрабатывать пользовательский ввод и пытаться обработать исключение
AssertionError
блоком try-except
.Если в вашем коде будет очень много
assert
'ов, то это затронет и производительность программы.#исключения #assert
Итерируемый счетчик
Еще один классный итератор из
В аргументах можно задать значения
Обычно
#itertools
Еще один классный итератор из
itertools
— это count
, который генерирует бесконечную последовательность чисел.В аргументах можно задать значения
start
и step
: первый отвечает за начальное значение, а второе за шаг, как и в range
.Обычно
count
редко используют с циклом for
. Чаще можно встретить случаи с функциями типа zip
или map
.#itertools
Классы данных
Еще в Python 3.7 добавили такую мощную штуку, как классы данных. Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных.
Встроенный модуль
Важно отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать
В результате вы автоматически получаете класс, с реализованными методами
#dataclass
Еще в Python 3.7 добавили такую мощную штуку, как классы данных. Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных.
Встроенный модуль
dataclasses
содержит декоратор @dataclass
. С его использованием код будет выглядеть лаконично и коротко. Пример на картинке выше.Важно отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать
Any
из модуля typing
.В результате вы автоматически получаете класс, с реализованными методами
__init__
, __repr__
, __str__
и __eq__
. Кроме того, это будет обычный класс и вы можете наследоваться от него или добавлять произвольные методы.#dataclass
Как работают арифметические операции
Если кто-то еще не знает, то в Python всё является объектами: числа в том числе. И при любых операциях, включая арифметические, у объектов вызываются магические методы.
Например, при сложении у объекта первого слагаемого вызывается соответствующий магический метод и в качестве аргумента передается объект второго слагаемого.
Еще стоит отметить, что у
#magic
Если кто-то еще не знает, то в Python всё является объектами: числа в том числе. И при любых операциях, включая арифметические, у объектов вызываются магические методы.
Например, при сложении у объекта первого слагаемого вызывается соответствующий магический метод и в качестве аргумента передается объект второго слагаемого.
Еще стоит отметить, что у
float
поддерживается деление с остатком, то есть метод __div__
. А int
имеет только деление с округлением, реализованное в методе __floordiv__
.#magic
Использование внешних процессов в Python с помощью subprocess
В мире программирования бывают моменты, когда необходимо взаимодействовать с внешними программами из кода на Python. Для этих задач отлично подходит модуль subprocess, который предоставляет удобный способ запуска внешних процессов, передачи данных им и получения результатов выполнения.
Что такое subprocess?
subprocess - это модуль Python, который предоставляет множество возможностей для запуска новых процессов, подключения к существующим процессам, а также обмена данными между вашим кодом и внешними программами.
Пример использования subprocess:
import subprocess
# Простой пример: выполнение команды "ls" в командной строке
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали subprocess.run для выполнения команды "ls -l". Параметр stdout=subprocess.PIPE указывает на перенаправление вывода команды в переменную result.stdout. Параметр text=True гарантирует, что вывод будет в текстовом формате.
Передача данных и получение результата:
import subprocess
# Передача данных в команду и получение результата
input_data = "Hello, subprocess!"
result = subprocess.run(['echo', input_data], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали команду echo для вывода переданных данных. subprocess.run позволяет передавать данные в команду через параметр input.
subprocess также предоставляет множество других функций для более сложных сценариев взаимодействия с процессами, таких как запуск процесса в фоновом режиме, обработка ошибок, а также потоковый вывод данных.
#python #subprocess
В мире программирования бывают моменты, когда необходимо взаимодействовать с внешними программами из кода на Python. Для этих задач отлично подходит модуль subprocess, который предоставляет удобный способ запуска внешних процессов, передачи данных им и получения результатов выполнения.
Что такое subprocess?
subprocess - это модуль Python, который предоставляет множество возможностей для запуска новых процессов, подключения к существующим процессам, а также обмена данными между вашим кодом и внешними программами.
Пример использования subprocess:
import subprocess
# Простой пример: выполнение команды "ls" в командной строке
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали subprocess.run для выполнения команды "ls -l". Параметр stdout=subprocess.PIPE указывает на перенаправление вывода команды в переменную result.stdout. Параметр text=True гарантирует, что вывод будет в текстовом формате.
Передача данных и получение результата:
import subprocess
# Передача данных в команду и получение результата
input_data = "Hello, subprocess!"
result = subprocess.run(['echo', input_data], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали команду echo для вывода переданных данных. subprocess.run позволяет передавать данные в команду через параметр input.
subprocess также предоставляет множество других функций для более сложных сценариев взаимодействия с процессами, таких как запуск процесса в фоновом режиме, обработка ошибок, а также потоковый вывод данных.
#python #subprocess
Highload буткэмп: Системный дизайн, Производительность и Масштабирование
🌐 Приглашаем на курсы для прокачки навыков архитектора и проектировщика на весеннем Highload-потоке от Devhands, в рамках которого вы:
🤩 Изучите ключевые хайлоад-паттерны и освоите проектирование систем с миллионной аудиторией: балансировка, масштабирование, шардинг, высокая доступность, CAP/PACELC, транзакционные очереди и многое другое.
🤩 Поупражняетесь в системном дизайне на реальных кейсах: маркетплейсы, соцсети, доставка, объявления и другие задачи, с получением обратной связи.
🤩 Погрузитесь в highload, работая с предоставленной вам инфраструктурой: “выжимайте” 100K RPS и изучите кластерные решения — Redis, SPQR, CockroachDB.
🤩 Научитесь планировать нагрузку и связывать бизнес-показатели с требованиями системы.
🤩 Попрактикуетесь в проведении и прохождении секций системного дизайна на интервью.
Только “живые” онлайн-сессии: лекции, брейнштормы, презентации домашних проектов.
🗓 Старт потока 24 февраля, изучайте программу и записывайтесь:
🤩 Буткэмп “Производительность и масштабируемость” для тех, кто хочет поработать с собственной инфрой.
🤩 Курс “Системный дизайн высоконагруженных проектов” для тех, кто хочет только практику проектирования “у доски”.
🥸 Кто мы: R&D-центр Devhands, основатель и автор курса Алексей Рыбак, ex-СТО Badoo и Yum! Brands, член программного комитета Highload.
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqwGy5SV
Только “живые” онлайн-сессии: лекции, брейнштормы, презентации домашних проектов.
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqwGy5SV
Please open Telegram to view this post
VIEW IN TELEGRAM
PyOxidizer
PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.
#python
PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.
#python
Слабые ссылки
Weakref позволяет создавать слабые ссылки к объектам, но не поддерживают объект живым, если не осталось больше сильных ссылок.
Слабые ссылки нужны для организации кэшей и хеш-таблиц из тяжелых объектов, потому что в долгоживущих программах может закончится память из-за большого хранения в кэшах.
#weakref
Weakref позволяет создавать слабые ссылки к объектам, но не поддерживают объект живым, если не осталось больше сильных ссылок.
Слабые ссылки нужны для организации кэшей и хеш-таблиц из тяжелых объектов, потому что в долгоживущих программах может закончится память из-за большого хранения в кэшах.
#weakref
Упрощенная работа с JSON
Казалось бы, куда еще проще, но есть один интересный пакет
Основные примеры использования показаны на картинке, там нет ничего сложного. Метод
Вообще возможностей у пакета достаточно, поэтому он достоен изучения и применения в проектах. Подробнее советую почитать в документации.
#json #jmespath
Казалось бы, куда еще проще, но есть один интересный пакет
JMESpath
, который позволяет декларативно указать, как извлекать элементы из документа JSON. Основные примеры использования показаны на картинке, там нет ничего сложного. Метод
search
принимает паттерн, по которому требуется извлечь данные, а также словарь (который в общем-то похож на JSON). Вообще возможностей у пакета достаточно, поэтому он достоен изучения и применения в проектах. Подробнее советую почитать в документации.
#json #jmespath
Улучшенные отчеты об ошибках
В последнем обновлении Python 3.10 добавили более удобную и точную информацию об ошибках. Теперь выводится и природа ошибки, и ее местоположение в коде.
Для ошибок, связанных с опечатками в названиях атрибутов и имен переменных в функциях, добавили рекомендации по исправлению.
#updates
В последнем обновлении Python 3.10 добавили более удобную и точную информацию об ошибках. Теперь выводится и природа ошибки, и ее местоположение в коде.
Для ошибок, связанных с опечатками в названиях атрибутов и имен переменных в функциях, добавили рекомендации по исправлению.
#updates
В четверг, 20 февраля, в 18:00 ждем вас в московском офисе Сбера на Python Birthday Meetup.
О чем поговорим:
Никита Замулдинов из Сбера расскажет, как превратить искусственный интеллект в своего личного ассистента, делегировать скучные задачи и расширить собственные возможности. Вас ждут реальные кейсы и демонстрация AI-агентов в действии.
Николай Хитров из Точки разберет новые и старые «грабли» Asyncio и расскажет о best practices его использования.
Александр Глазков из Сбера расскажет, как и почему Pydantic изменил жизнь команды, а также поделится тонкостями его использования.
А также в программе:
📍 Офлайн + онлайн
✅ Регистрация на мероприятие и подробности
Please open Telegram to view this post
VIEW IN TELEGRAM
Код в одну строку через бота
Ещё один интересный проект от нашего подписчика — телеграм бот @onelinepython_bot, который превращает код на Python в одну строку. Проект написан на C#, но тем не менее стоит внимания.
Отправьте боту файл с кодом на Python, и он в ответ ваш пришлет новый файл, состоящий всего из одной строки. Результат получается с помощью функции
Присылайте свои проекты в личные сообщения @a1f20. Про самое интересное расскажем на канале.
#проектподписчика
Ещё один интересный проект от нашего подписчика — телеграм бот @onelinepython_bot, который превращает код на Python в одну строку. Проект написан на C#, но тем не менее стоит внимания.
Отправьте боту файл с кодом на Python, и он в ответ ваш пришлет новый файл, состоящий всего из одной строки. Результат получается с помощью функции
exec
, которая позволяет исполнять код в виде строки. Присылайте свои проекты в личные сообщения @a1f20. Про самое интересное расскажем на канале.
#проектподписчика