Библиотека Python разработчика | Книги по питону
19.5K subscribers
1.05K photos
392 videos
82 files
988 links
Полезные материалы для питониста по Фреймворкам Django, Flask, FastAPI, Pyramid, Tornado и др.

По всем вопросам @evgenycarter

РКН clck.ru/3Ko7Hq
Download Telegram
Пишем микро-shellcode в формате ELF вручную

На Хабре уже не раз публиковались статьи про устройство формата ELF и написание файлов в таком формате вручную, но я не считаю лишним опубликовать и свой вариант решения этой задачи. В результате получился файл, вызывающий /bin/sh и занимающий всего 76 байт (что на 8 байт меньше, чем сумма длин заголовков ELF, необходимых для запуска).

https://habr.com/ru/articles/749480/

👉@BookPython
Какие нюансы есть в использовании чисел как ключей?

Числовые ключи в словарях подчиняются правилам сравнения чисел. Таким образом, int(1) и float(1.0) считаются одинаковым ключом. Однако из-за того, что значения типа float сохраняются приближенно, не рекомендуется использовать их в качестве ключей.

👉@BookPython
Под капотом Python. Тонкости популярных конструкций with и contextmanager

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

https://habr.com/ru/companies/beeline_cloud/articles/749580/

👉@BookPython
benedict

Если вы столкнулись с трудностями при работе со словарями в Python, то benedict может стать тем решением, которое вы искали.

benedict наследуется от встроенного типа dict, что означает, что он полностью совместим с существующими словарями и может быть использован в качестве замены в большинстве случаев.

Одной из ключевых особенностей benedict является поддержка keylists и keypaths. Это упрощает доступ к значениям в сложных словарях и работу с ними без необходимости вручную копаться во вложенных уровнях.

👉@BookPython
Практическое руководство по метапрограммированию в Python

Метапрограммирование - это техника программирования, при которой программа может изменять или генерировать код во время выполнения. Она позволяет разработчикам писать код, который может анализировать, изменять или создавать другой код.

https://dev.to/karishmashukla/a-practical-guide-to-metaprogramming-in-python-691

👉@BookPython
Как узнать заряд батареи компьютера с помощью Python

Для узнавания остатка зарядки на компьютере в операционной системе Windows можно использовать следующий код на Python.

Для выполнения этого кода нужно установить библиотеку psutil. Это можно сделать с помощью pip install psutil.

Данный код сначала получает объект battery с помощью функции psutil.sensors_battery(), которая предоставляет информацию о состоянии батареи компьютера. Затем он проверяет, подключена ли зарядка, с помощью свойства power_plugged.

👉@BookPython
Как работает multiprocessing в Python под капотом

Я довольно давно пишу на Python и во многих проектах использовал multiprocessing — пакет стандартной библиотеки языка Python, который предоставляет интерфейс для работы с процессами, очередями, пулами процессов и многими другими удобными инструментами для параллельного программирования. В какой-то момент я понял, что мне не хватает более детального понимания работы этой библиотеки.

Мне захотелось залезть в исходники multiprocessing, разобраться и заодно написать статью. Данная статья в основном рассчитана на новичков в Python и тех, кто хочет подробнее разобраться в том, как именно создаются процессы и пулы в Python и погрузиться в детали реализации.

В статье я не буду рассказывать что такое процессы и зачем они нужны. Почитать самую базу про операционные системы и процессы можно, например, тут и тут. Также важно уточнить, что весь приведенный в статье код соответствует версии Python 3.11.4

https://habr.com/ru/articles/803607/

👉@BookPython
Python provides the powerful library to work with date and time: datetime. The interesting part is, datetime objects have the special interface for timezone support (namely the tzinfo attribute), but this module only has limited support of its interface, leaving the rest of the job to different modules.

The most popular module for this job is pytz. The tricky part is, pytz doesn't fully satisfy tzinfo interface. The pytz documentation states this at one of the first lines: “This library differs from the documented Python API for tzinfo implementations.”

You can't use pytz timezone objects as the tzinfo attribute. If you try, you may get the absolute insane results:

In : paris = pytz.timezone('Europe/Paris')
In : str(datetime(2017, 1, 1, tzinfo=paris))
Out: '2017-01-01 00:00:00+00:09'


Look at that +00:09 offset. The proper use of pytz is following:

In : str(paris.localize(datetime(2017, 1, 1)))
Out: '2017-01-01 00:00:00+01:00'


Also, after any arithmetic operations, you should normalize your datetime object in case of offset changes (on the edge of the DST period for instance).

In : new_time = time + timedelta(days=2)
In : str(new_time)
Out: '2018-03-27 00:00:00+01:00'
In : str(paris.normalize(new_time))
Out: '2018-03-27 01:00:00+02:00'


Since Python 3.6, it's recommended to use dateutil.tz instead of pytz. It's fully compatible with tzinfo, can be passed as an attribute, doesn't require normalize, though works a bit slower.

If you are interested why pytz doesn't support datetime API, or you wish to see more examples, consider reading the decent article on the topic.

👉@BookPython
Hands-On Web Scraping with Python: Extract quality data from the web using effective Python techniques, 2nd Edition
Автор: Anish Chapagain (2023)

Применяя практический подход, это обновленное издание использует реальные примеры и упражнения для объяснения ключевых понятий. Начиная с введения в основы web-scraping и программирования на Python, вы рассмотрите ряд методов сбора информации, включая запросы, lxml, pyquery, Scrapy и Beautiful Soup. Вы также познакомитесь с такими продвинутыми темами, как безопасная работа с веб-страницами, веб-интерфейсы, Selenium для веб-скрепинга, извлечение PDF, regex, анализ данных, отчеты EDA, визуализация и машинное обучение.

Скачать

👉 @python_360
Dash

Dash — это популярная библиотека для создания веб-приложений на Python. Она позволяет разработчикам создавать интерактивные, аналитические приложения без необходимости использовать JavaScript.

Dash основан на Flask, Plotly и React, и предоставляет простой способ создания веб-приложений с использованием компонентов, таких как графики, таблицы и формы.

В этом примере мы создаем простое веб-приложение с использованием Dash. Приложение содержит поле ввода, кнопку отправки и контейнер для вывода результата. Мы определяем функцию update_output, которая вызывается при нажатии на кнопку "Submit". Функция возвращает текст, введенный пользователем, и выводит его в контейнере.

👉@BookPython
Пример уменьшения размерности данных с помощью линейных и нелинейных методов в Python

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

https://habr.com/ru/articles/751050/

👉@BookPython
Отправка электронных писем

Приведенный скрипт использует библиотекуSMTP, чтобы отправлять электронные письма указанным получателям. Реализация может быть изменена в зависимости от варианта использования.

В приведенной выше реализации скрипт использует данные отправителя и получателя, а также тему и текст сообщения. Затем скрипт подключается к SMTP-серверу Gmail, форматирует сообщение и отправляет его с помощью метода sendmail(). Наконец, скрипт выводит сообщение, указывающее, что электронное письмо было успешно отправлено, и отключается от SMTP-сервера.

👉@BookPython
ScrapeGraphAI

Python-скрепер на основе искусственного интеллекта

ScrapeGraphAI - это python-библиотека для веб-скреппинга, которая использует LLM и прямую графовую логику для создания конвейеров скреппинга для веб-сайтов и локальных документов (XML, HTML, JSON и т.д.).

Просто скажите, какую информацию вы хотите извлечь, и библиотека сделает это за вас!

https://github.com/VinciGit00/Scrapegraph-ai

👉@BookPython
Подборка Telegram каналов для программистов

Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux


https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)

https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика

https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT

Чат программистов📌
https://t.me/developers_ru

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Английский 📌
https://t.me/UchuEnglish Английский с нуля

Математика 📌
https://t.me/Pomatematike Канал по математике

Excel лайфхак📌
https://t.me/Excel_lifehack
Nested Sets (вложенные множества)

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

Каждая категория представлена объектом, содержащим поля "ID", "Название", "Левая граница" и "Правая граница". "Левая граница" и "Правая граница" определяют диапазон значений, которые охватывают поддерево данной категории.

Преимущество использования Nested Sets заключается в том, что мы можем эффективно извлекать всех потомков узла, находить родителей и определять уровень вложенности с помощью простых операций сравнения.
В этом примере мы находим всех потомков категории "Компьютеры".

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

👉@BookPython
Революционный подход к нейросетям: рассказываем про KAN (Kolmogorov-Arnold Networks)

Эволюция архитектуры нейронных сетей уходит корнями в фундаментальные работы, заложенные в 1940-х годах Уорреном Маккаллохом и Уолтером Питcом, которые предложили концепцию искусственных нейронов и их взаимосвязь.

Однако значительные прорывы произошли только в 1980-х годах с разработкой алгоритмов обратного распространения ошибки: алгоритм Геоффри Хинтона и других – все это позволило создавать более глубокие нейронные сети и улучшить методы обучения.

В это время появились классические архитектуры, многослойные перцептроны (MLP, и сверточные нейронные сети (CNN), которые революционизировали различные области, включая компьютерное зрение, обработку естественного языка и распознавание образов – теперь мы говорим про своего рода инновационную архитектуру.

https://habr.com/ru/articles/820891/

👉@BookPython
Напишите функцию, которая будет принимать список nums, содержащий числа в диапазоне от 1 до 100, и возвращать отсортированный список чисел, которые в списке nums встречались дважды.

Примеры:

duplicate_nums([1, 2, 3, 4, 3, 5, 6])
➞ [3]


duplicate_nums([81, 72, 43, 72, 81, 99, 99, 100, 12, 54])
➞ [72, 81, 99]

duplicate_nums([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
➞ None


Примечания:
— никакое число не будет встречаться в nums трижды и более раз,
— если никакое число в nums не встречалось дважды, функция должна вернуть None.

👉@BookPython
Что происходит, когда запускаешь «Hello World» в Linux

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.
print("hello world")

Вот как это выглядит в командной строке:
$ python3 hello.py
hello world


Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.

https://habr.com/ru/companies/ruvds/articles/753506/

👉@BookPython
Библиотека Feather

Feather — это библиотека для эффективного чтения и записи таблиц данных в двоичный формат. Она использует формат Apache Arrow для сериализации данных, что позволяет быстро читать и записывать данные без потери информации.

В этом примере мы использовали две основные функции библиотеки:
feather.write_dataframe(): записывает таблицу данных в файл формата Feather.
feather.read_dataframe(): читает таблицу данных из файла формата Feather.

Feather позволяет быстро и эффективно обмениваться данными между Python и R, а также обеспечивает быстрое чтение и запись таблиц данных на диск.

👉@BookPython
Python, внешние функции и Steam

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

https://arturdryomov.dev/posts/python-foreign-functions-and-steam/

👉@BookPython
When you use a variable in Python, it's first looked up in the current scope. If no such variable is found, the next enclosing scope is searched. That is repeated until the global namespace is reached.

x = 1
def scope():
x = 2
def inner_scope():
print(x) # prints 2
inner_scope()
scope()

However, the variable assignment doesn't work the same way. The new variable is always created in the current scope unless global or nonlocal is specified:

x = 1
def scope():
x = 2
def inner_scope():
x = 3
print(x) # prints 3
inner_scope()
print(x) # prints 2
scope()
print(x) # prints 1

global allows using variables of global namespaces while nonlocal searches for the variable in the nearest enclosing scope. Compare:

x = 1
def scope():
x = 2
def inner_scope():
global x
x = 3
print(x) # prints 3
inner_scope()
print(x) # prints 2
scope()
print(x) # prints 3


x = 1
def scope():
x = 2
def inner_scope():
nonlocal x
x = 3
print(x) # prints 3
inner_scope()
print(x) # prints 3
scope()
print(x) # prints 1

👉@BookPython