calendar
есть функция month()
, которая вернет календарь указанного месяца в виде строки, как показано в примере. А функция calendar()
выдаст целый год.tqdm
является простым и лаконичным вариантом.range
можно заменить на trange
для визуализации прогресса. А для итерации по какой-либо последовательности, достаточно просто передать её в функцию tqdm
. Также модуль хорошо себя зарекомендовал и в Jupyter Notebook.tqdm
произошло от арабского слова "taqaddum" (تقدّم), которое означает "прогресс," а также это ещё и сокращение от "я тебя сильно люблю" на испанском (te quiero demasiado).__enter__
и __exit__
. Но такой подход может показаться слегка сложным.@contextmanager
из встроенного пакета contextlib
.tag
, которая идёт до yield
, выполняется при входе в блок with
. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield
.__mro__
. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value
, Python будет искать сначала в классе A
, далее в B
, затем в C
и в самом конце в object
. 10000000
и 100000000
. Использовать запятые, как в английском языке, не получится.1_000_000
будет интерпретироваться как целое число 1000000
.pathlib
, позволяющий осуществлять различную работу с файловыми путями. Path
, с объектами которого уже можно производить операции. Например, методы exists()
и is_dir()
проверяют, существует ли файл и является ли он директорией. os.path.join()
на более удобный и элегантный вариант с использованием слэшей, как показано на картинке. pathlib
может стать частичной заменой os
в некоторых случаях при работе с файловыми путями. spellchecker
позволяет находить опечатки в тексте и даже дает возможные варианты исправлений. SpellChecker
и его методов correction
и candidates
показаны на картинке. string
из стандартной библиотеки содержит интересный класс Template
, который позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.format
, но всё же о Template
стоит хотя бы знать на случай, если придется работать с легаси кодом.pip
.PrettyTable
из этого модуля. Задать название для столбцов можно с помощью атрибута fields_name
. Строки в таблицу добавляются путем вызова метода add_row
.prettytable
позволяет регулировать различные параметры, сортировать данные, работать с html
, а также взаимодействовать с csv
и sql
таблицами. Так что возможностей у этого модуля предостаточно.pytest
— ближе по духу к Python нежели unittest
, который накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов. pytest
ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python. unittest
и nose
, то есть полная обратная совместимость с ними.RecursionError
во время создания рекурсивных алгоритмов. sys
можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти. zip
файлами можно использовать встроенный модуль zipfile
. Если кто не помнит, то zip
файл — это архив, содержащий сжатые файлы. printdir
, а извлечь все файлы можно вызвав extractfile
. zip
архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию. validators
позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.validators
позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.Process
из встроенного модуля multiprocessing
позволяет создавать процессы без прямого вызова функции fork
, про которую писали раньше на канале.Proccess
необходимо передать функцию, которую требуется исполнить в отдельном дочернем процессе и аргументы этой функции. Процесс будет создан после вызова метода start
. Внутри метода start
будет вызван fork
и будет исполнена функция в отдельном процессе.join
.shorten
из модуля textwrap
.