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

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

РКН clck.ru/3Ko7Hq
Download Telegram
Библиотека EasyOCR для распознавания текста на картинках

Поддерживает 80+ языков. Выдаёт результат в виде списка, каждый элемент которого представляет собой координаты ограничивающей рамки, обнаруженный текст и уровень уверенности модели.

Установка через pip install easyocr

https://github.com/JaidedAI/EasyOCR

👉@BookPython
Float или Decimal: в чём различия и что лучше использовать?

И тот, и другой предназначены для работы с дробными числами, но есть нюанс. Float использует некоторое приближение при работе с числами с плавающей точкой, поэтому может вносить ошибки округления. То есть Float эффективный и быстрый, но не очень точный.

Эта особенность может мешать в некоторых случаях, например, при работе с деньгами. Ошибки округления могут привести к значительным потерям, если обрабатывается большое количество транзакций. Тогда лучше использовать Decimal. Его нужно импортировать — from decimal import Decimal. Передавать на вход следует строку. Как видно на картинке, благодаря Decimal устраняются возможные ошибки округления.

👉@BookPython
Библиотека captcha, генерирующая звуковые и графические CAPTCHA

Установка — pip install captcha


Аудио- и графические CAPTCHA находятся в отдельных модулях:


from captcha.audio import AudioCaptcha
from captcha.image import ImageCaptcha

audio = AudioCaptcha(voicedir='/path/to/voices')
image = ImageCaptcha(fonts=['/path/A.ttf', '/path/B.ttf'])

data = audio.generate('1234')
audio.write('1234', 'out.wav')

data = image.generate('1234')
image.write('1234', 'out.png')


https://github.com/lepture/captcha

👉@BookPython
Как реализовать очередь в Python

Очереди (Queues) — одна из структур данных, используемая для хранения коллекций элементов в порядке first-in, first-out (FIFO). Всё, как в настоящей очереди, — кто первым вошёл, то раньше всех и вышел.

В Python очереди можно реализовать с помощью класса deque() из модуля collections или модуля queue.

Чтобы добавить элементы в очередь: в deque используем метод append(), в Queue — put()
Чтобы удалить элементы из очереди: в deque — метод popleft(), в Queue — get()
Чтобы проверить размер очереди, используем len()

Стоит отметить, что queue.Queue предназначен для многопоточного программирования.

👉@BookPython
Что делает функция takewhile() модуля itertools

Функция создаёт итератор, возвращающий элементы из итерируемого объекта до тех пор, пока указанное условие истинно (True или 1). Как только условие становится ложным, итератор прекращает свою работу и больше не возвращает элементы.

В примере takewhile будет возвращать элементы из списка my_list, пока они меньше пяти. Как только встретится элемент, равный или больший пяти, работа прекратится.

👉@BookPython
Starmap()

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

Таким образом, starmap() можно использовать вместо map(), если данные были предварительно упакованы в кортежи.

В примере starmap() позволяет вычислить квадраты чисел в кортежах в списке и сложить их.

👉@BookPython
Зачем в Python использовать конструкцию if __name__ == '__main__'?

Если коротко: так мы будем уверены, что определённый кусок кода выполнится только в случае, если мы запустим Python-скрипт напрямую. Это позволяет нам без опасений импортировать его в качестве модуля.

👉@BookPython
Руководство по кэшированию в Django

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

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

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

https://www.sitepoint.com/django-caching-comprehensive-guide/

👉@BookPython
Трюки с f-строками Python

F-строки — это мощный инструмент для форматирования строк, который позволяет включать выражения и переменные непосредственно внутрь них.

Вот некоторые интересные возможности f-строк:
🟢 перевод из одной системы счисления в другую — f'binary: {number:b}'
🟢 перевод в проценты — f'percentage = {ratio:.2%}'
🟢 арифметические операции — f'{a + b = }'
🟢 форматирование объекта datetime — f'datetime : {today}'


https://www.reddit.com/r/Python/comments/17hgu5o/you_should_know_these_fstring_tricks/

👉@BookPython
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка Telegram каналов для программистов

Системное администрирование 📌

https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
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

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/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 Полезные советы по программированию
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

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 Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
https://t.me/Excel_lifehack

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

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

Этот метод используется для инициализации, то есть установки начального состояния нового экземпляра класса. Вызывается сразу при создании объекта (смотри пример на картинке). В большинстве случаев метод просто хранит атрибуты.

Если не прописывать __init__ в классе, то при создании его экземпляра атрибуты автоматически не будут установлены. Придётся вызывать дополнительные методы. __init__ решает эту проблему.

👉@BookPython
Некоторые способы упростить конструкцию if-else

Иногда можно выбросить else. В функции return в блоке if прерывает её выполнение, поэтому в том, чтобы писать блок else просто нет надобности.
Иногда можно всё написать в одну строку. Выглядит красиво, но следует помнить, что такая конструкция плохо расширяемая.
Вместо большого количества or в условии можно использовать последовательности. Например, можно создать кортеж и положить в него все важные для условия значения.

👉@BookPython
16-, 8- и 4-битные форматы чисел с плавающей запятой

Уже лет 50, со времён выхода первого издания «Языка программирования Си» Кернигана и Ритчи, известно, что «числа с плавающей запятой» одинарной точности имеют размер 32 бита, а числа двойной точности — 64 бита. Существуют ещё и 80-битные числа расширенной точности типа «long double». Эти типы данных покрывали почти все нужды обработки вещественных чисел. Но в последние несколько лет, с наступлением эпохи больших нейросетевых моделей, у разработчиков появилась потребность в типах данных, которые не «больше», а «меньше» существующих, потребность в том, чтобы как можно сильнее «сжать» типы данных, представляющие числа с плавающей запятой.

https://habr.com/ru/companies/wunderfund/articles/776496/

👉@BookPython
Одинарные и двойные подчёркивания в именах Python

В Python есть несколько важных соглашений об именовании, касающихся использования одинарного или двойного подчёркивания (_).

Например, в Python приватные и защищённые методы классов реализованы лишь на уровне договорённостей между разработчиками. Так, перед приватными методами нужно писать двойное нижнее подчёркивание, а перед защищёнными — одно.

👉@BookPython
Модуль difflib для сравнения последовательностей

Особенно полезен для работы с текстами. Содержит функции для создания отчётов в нескольких распространённых форматах, в том числе в HTML.

▪️Класс Differ(), например, выводит различия в отдельных строках, сопровождая их префиксами.
▪️Класс SequenceMatcher() позволяет вычислить сходство между строками. Функция get_opcodes() возвращает список инструкций для приведения первой последовательности к виду второй.

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

👉@BookPython
Зачем нужен модуль enum

Содержит в себе перечисления, которые используются для создания именованных констант. Рассмотрим на примере:

Вы пишете приложение, в котором нужно обрабатывать различные типы ошибок (404, 500 и так далее). Перечисления могут быть использованы для представления разных кодов ошибок.

По сути, перечисления — это набор символических имён, связанных с уникальными значениями. По ним можно итерироваться. В целом, модуль enum позволяет создать более читаемый и самодокументирующийся код.

https://habr.com/ru/companies/timeweb/articles/564826/

👉@BookPython
Модуль pprint для красивого вывода сложных структур данных

Используется как обычный print(), но в отличие от него выводит данные в удобном для чтения человеком виде.

Также в модуле есть функция pformat(), которая создаёт строковые представления вместо вывода. Это может пригодиться для логгирования.

Ещё для pprint() можно задать ширину экрана печати, отступ последующего уровня вложенности и даже автоматически отсортировать словарь перед выводом.

👉@BookPython
Минимальные примеры структур данных и алгоритмов на Python

Устанавливается просто через pip install algorithms

Затем можно импортировать различные алгоритмы:
▫️сортировки (быстрая, пузырьком и ещё +22 вида);
▫️графовые;
▫️поиска;
▫️на деревьях и так далее.

https://github.com/keon/algorithms/

👉@BookPython
Модуль fractions для работы с дробями

Создать рациональное число можно через Fraction() из пары целых чисел, другого рационального числа или строки. Numerator — это числитель, а denominator — знаменатель. По умолчанию numerator=0, denominator=1.

Целые и вещественные числа Python можно преобразовать в дробь, передав их Fraction().

С модулем fractions устраняются проблемы с ошибками представления, возникающие в числах с плавающей точкой.

👉@BookPython
Более эффективный метод объединения строк

Про объединение (конкатенацию) строк с помощью оператора + говорят в каждом туториале по Python для новичков. Однако иногда это не самый эффективный способ решить задачу.

Дело в том, что строки — неизменяемые объекты в Python. Это означает, что каждый раз при конкатенации вы создаёте новую строку с объединённым содержимым.

Более экономно по памяти и быстрее будет использовать метод join() для списков. При вызове он создаёт единственную строку.

👉@BookPython