Что такое модули перечислите основные модули стандартной библиотеки python
Перейти к содержимому

Что такое модули перечислите основные модули стандартной библиотеки python

  • автор:

Модули

Python 3 логотип

Основные модули в Python 3. Описание модулей и перевод документации к ним.

Модуль csv — чтение и запись CSV файлов

Формат CSV (Comma Separated Values) является одним из самых распространенных форматов импорта и экспорта электронных таблиц и баз данных. CSV использовался в течение многих лет до того, как был стандартизирован в RFC 4180. Запоздание четко определенного стандарта означает, что в данных, создаваемых различными приложениями, часто существуют незначительные различия. Эти различия могут вызвать раздражение при обработке файлов CSV из нескольких источников. Тем не менее, хотя разделители, символы кавычек и некоторые другие свойства различаются, общий формат достаточно универсален. Значит, возможно написать один модуль, который может эффективно манипулировать такими данными, скрывая детали чтения и записи данных от программиста.

Модуль shutil

Модуль shutil содержит набор функций высокого уровня для обработки файлов, групп файлов, и папок. В частности, доступные здесь функции позволяют копировать, перемещать и удалять файлы и папки. Часто используется вместе с модулем os.

Модуль unittest: тестируем свои программы

Представьте, что вы написали какую-либо программу, а теперь хотите проверить, правильно ли она работает. Что вы для этого сделаете? Скорее всего, вы запустите её несколько раз с различными входными данными, и убедитесь в правильности выдаваемого ответа.

А теперь вы что-то поменяли и снова хотите проверить корректность программы. Запускать ещё несколько раз? А если потом снова что-то поменяется? Нельзя ли как-то автоматизировать это дело?

Оказывается, можно. В Python встроен модуль unittest, который поддерживает автоматизацию тестов, использование общего кода для настройки и завершения тестов, объединение тестов в группы, а также позволяет отделять тесты от фреймворка для вывода информации.

Модуль subprocess

Модуль subprocess отвечает за выполнение следующих действий: порождение новых процессов, соединение c потоками стандартного ввода, стандартного вывода, стандартного вывода сообщений об ошибках и получение кодов возврата от этих процессов.

Модуль fractions

Модуль fractions предоставляет поддержку рациональных чисел.

Модуль cmath

Модуль cmath – предоставляет функции для работы с комплексными числами.

Модуль glob

Модуль glob находит все пути, совпадающие с заданным шаблоном в соответствии с правилами, используемыми оболочкой Unix. Обрабатываются символы «*» (произвольное количество символов), «?» (один символ), и диапазоны символов с помощью []. Для использования тильды «~» и переменных окружения необходимо использовать os.path.expanduser() и os.path.expandvars().

Модуль copy — поверхностное и глубокое копирование объектов

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

Модуль functools

Модуль functools — сборник функций высокого уровня: взаимодействующих с другими функциями или возвращающие другие функции.

Модуль os.path

os.path является вложенным модулем в модуль os, и реализует некоторые полезные функции для работы с путями.

  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Модули в Python для начинающих

Библиотеки или модули нужны для того, чтобы расширить возможности Python и упростить написание программ. Модуль math , например, помогает при работе с числами, а модуль datetime нужен для работы с датой и временем.

Описание модулей, входящих в стандартную библиотеку Python, есть на официальном сайте .

Увидев богатый набор модулей, начинающий программист скорее всего испугается такого количества информации для запоминания. Однако, в этом нет надобности. К использованию модулей необходимо прибегать по необходимости.

Например, если вы работаете с какими-то сложными математическими вычислениями, вы подключаете модуль со встроенной поддержкой требуемых операций. И, соответственно, у вас отпадет необходимость придумывать то, что было уже до вас придумано.

Сторонние модули могут быть написаны не только на языке Python, но и также на C и C++, а это дает существенный прирост в скорости работы таких модулей.

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

import math

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

Например, выводим на экран значение числа π:

import math
print (math.pi)

или косинус единицы

import math
print (math.cos(1))

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

import time, random
while True:
print(random.randint(1, 100))
time.sleep(1)

Эта программа будет выводить случайное целое число от 1 до 100 с паузой в одну секунду.

Хотите выучить Python на практике?

Язык Python

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

Работа с операционной системой

Модуль sys

Модуль sys обеспечивает доступ к параметрам и функциям операционной системы.

Список sys.argv хранит имя запущенного скрипта и аргументы командной строки, переданные при его запуске:

# test.py import sys for idx, item in enumerate(sys.argv): print(f'Arg idx>: item:8> type(item)>') 
user@host:~$ python test.py arg1 arg2 345 Arg 0: test.py 'str'> Arg 1: arg1 'str'> Arg 2: arg2 'str'> Arg 3: 345 'str'>

Переменная sys.executable позволяет узнать какой именно интерпретатор python используется:

print(sys.executable) # /home/vitaly/miniconda3/envs/tf2/bin/python 

Функция sys.exit позволяет завершить выполнение программы. Эта функция принимает один аргумент — код выхода, который по умолчанию равен нулю. Большинство систем будет считать код 0 признаком успешного завершения программы, а любое другое число от 1 до 127 будет считать признаком ненормального завершения. Если передан объект другого типа, то он будет выведен в стандартный поток вывода, а код выхода будет равен 1. Функция sys.exit всегда генерирует исключение SystemExit, поэтому не стоит рассматривать ее как стандартный способ завершения программы. Используйте ее только в подходящих случаях, которые чаще всего связаны с невозможностью продолжения работы программы.

Переменная sys.path обеспечивает доступ к переменной окружения PYTHONPATH . Эта переменная содержит список путей, в которых выполняется поиск модулей. Если необходимый модуль расположен в директории, которая не входит в PYTHONPATH , то перед подключением этого модуля необходимо добавить эту директорию в переменную sys.path :

# 'path/to/my/facorite/module/dir/mymodule.py' sys.path.append('path/to/my/facorite/module/dir') import mymodule 

Можно указывать абсолютный или относительный путь. Модуль sys имеет еще много инструментов, которые описаны в документации.

Модуль os

Модуль os предоставляет инструменты для работы с операционной системой и файловой системой.

Функции os.getenv и os.putenv позволяют получать и изменять значения переменных окружения. Функция os.system позволяет выполнять консольные команды, запуская при этом дочерний процесс. Рассмотрим следующий скрипт:

# test.py import os import sys print(f' HOME: os.getenv("HOME")>') os.putenv('NEWENV', 'value') print(f'NEWENV: os.getenv("NEWENV")>') if os.getenv('NEWENV') is not None: sys.exit(0) os.system('python test.py') 

При работе скрипта можно получить вывод, подобный такому:

HOME: /home/vitaly NEWENV: None HOME: /home/vitaly NEWENV: value

Разберемся с тем что произошло. Переменная окружения HOME содержит путь к домашней директории пользователя. Мы получили значение этой переменной с помощью os.genenv (в данном случае /home/vitaly ) и вывели его в консоль. Затем, c помощью sys.putenv , мы задали значение value новой переменной окружения NEWENV и сразу прочитали его. Функция os.getenv вернула None , поскольку функция sys.putenv оказывает влияние только на окружение дочерних процессов. Чтобы это проверить, мы снова запустили интерпретатор python с нашим скриптом test.py , используя os.system . В дочернем процессе снова были выведены переменные окружения HOME и NEWENV . В дочернем процессе переменная NEWENV определена, поэтому сработало условие для выхода из программы с помощью sys.exit(0) .

Функция os.listdir возвращает список названий объектов, лежащий в заданной директории.

Модуль os.path

Модуль os.path содержит полезные инструменты для работы с путями файловой системы. Функция os.path.exists проверяет указывает ли путь на существующий объект в файловой системе. Функция os.path.isfile имеет схожий смысл, но возвращает True только в том случае, если объект является обычным файлом (не директория и не ссылка):

os.path.exists('/home/vitaly') # True os.path.exists('/home/david') # False os.path.isfile('/home/vitaly') # False 

Функции os.path.join , os.path.split и os.path.splitext выполняют часто встречающиеся манипуляции со строками путей:

path = os.path.join('/home', 'vitaly', 'test.py') # /home/vitaly/test.py head, tail = os.path.split(path) # ['/home/vitaly', 'test.py'] root, ext = os.path.splitext(path) # ['/home/vitaly/test', '.py'] 
Модуль shutil

Модуль shutil предоставляет высокоуровневые инструменты для операций с файлами. Вот несколько примеров:

# копирование файла в директорию shutil.copy('filename', 'path/to/dir') # копирование файла в файл с другим именем shutil.copyfile('filename1', 'filename2') # рекурсивное копирование директории dir1 в директорию dir2 shutil.copytree('path/to/dir1', 'path/to/dir2') # рекурсивное удаление содержимого директории dir shutil.rmtree('path/to/dir') # рекурсивное перемещение файла или директории shutil.move(src, dst) 
Модуль glob

Модуль glob позволяет выполнять поиск объектов в файловой системе, имена которых удовлетворяют заданному паттерну:

# список текстовых файлов в текущей директории text_files = glob.glob('./*.txt') # рекурсивный поиск файлов с расширением .py, # начиная с текущей директории text_files_all = glob.glob('./**/*.py', recursive=True) 

Работа со строками

Модуль string

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

string.ascii_lowercase # 'abcdefghijklmnopqrstuvwxyz' string.ascii_uppercase # 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' string.ascii_letters # 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' string.digits # '0123456789' string.punctuation # !"#$%&'()*+,-./:;?@[\]^_`<|>~ 
Модуль re

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

Вычисления с произвольной точностью

Модуль decimal

Модуль decimal позволяет выполнять арифметические операции с плавающей точной с фиксированной точностью:

from decimal import * getcontext().prec = 6 Decimal(1) / Decimal(7) # Decimal('0.142857') getcontext().prec = 28 Decimal(1) / Decimal(7) # Decimal('0.1428571428571428571428571429') 

Объекты Decimal представлены в памяти точно. Это значит, что числа Decimal можно сравнивать с помощью операторов == и != , не опасаясь погрешности из-за округления двоичного представления (как это происходит в случае с типом float ).

В модуле decimal доступны некоторые математические функции:

getcontext().prec = 28 Decimal(2).sqrt() # Decimal('1.414213562373095048801688724') Decimal(1).exp() # Decimal('2.718281828459045235360287471') Decimal('10').ln() # Decimal('2.302585092994045684017991455') Decimal('10').log10() # Decimal('1') 
Модуль fractions

Тип Fraction из модуля fractions описывает рациональные числа — числа, которые можно представить в виде обыкновенной дроби:

from fractions import Fraction from math import pi, cos Fraction(16, -10) # Fraction(-8, 5) Fraction('3.1415926535897932').limit_denominator(1000) # Fraction(355, 113) Fraction(cos(pi/3)) # Fraction(4503599627370497, 9007199254740992) 

В последнем примере мы воспользовались модулем math , который мы не будем обсуждать, поскольку его возможности перекрываются модулем numpy . Модуль numpy будет рассмотрен в следующих частях.

Продвинутые структуры данных и эффективное итерирование

Модуль queue

Модуль queue содержит реализацию нескольких структур данных, среди которых FIFO-очередь queue.Queue и очередь с приоритетом queue.PriorityQueue . Очередь с приоритетом возвращает не первый добавленный элемент, а наименьший:

from queue import Queue, PriorityQueue arr = [3, 6, 1, 9, 4, 7, 2, 5, 8, 1] q = Queue() for i in arr: q.put_nowait(i) while not q.empty(): print(q.get_nowait(), end=' ') # 3 6 1 9 4 7 2 5 8 1 pq = PriorityQueue() for i in arr: pq.put_nowait(i) while not pq.empty(): print(pq.get_nowait(), end=' ') # 1 1 2 3 4 5 6 7 8 9 

Типы модуля queue созданы для работы в многопоточной среде исполнения. С особенностями многопоточной работы, которые мы не будем обсуждать, связано использование методов get_nowait и put_nowait вместо get и put .

Модуль collections

Модуль collections расширяет набор стандартных контейнеров python. Рассмотрим три типа данных из этого модуля.

Функция namedtuple() позволяет создавать типы данных с именованными полями:

from collections import namedtuple Vector = namedtuple('Vector', ['x', 'y', 'z']) v1 = Vector(1., 0.5, 0.6) v1.x # 1. v1.y # 0.5 v1.z # 0.6 

Тип deque реализует контейнер двусторонняя очередь, или дек. Это последовательный контейнер, который позволяет эффективно добавлять и удалять элементы в начало и в конец:

from collections import deque deq = deque([1, 3, 5]) deq.append('a') # [1, 3, 5, 'a'] deq.appendleft(False) # [False, 1, 3, 5, 'a'] a = deq.pop() # a = 'a', deq = ['False', 1, 3, 5] b = deq.popleft() # b = False, deq = [1, 3, 5] 

Тип Counter является подклассом типа dict и позволяет удобно подсчитывать количество вхождений элементов в контейнере, например:

from collections import Counter the_longest_word_in_english\ = 'pneumonoultramicroscopicsilicovolcanoconiosis' cnt = Counter(the_longest_word_in_english) for key, val in cnt.items(): print(f'key>: val>', end=', ') # p: 2, n: 4, e: 1, u: 2, m: 2, o: 9, l: 3, t: 1, r: 2, a: 2, i: 6, c: 6, s: 4, v: 1 cnt.most_common(1) # [('o', 9)] 
Модуль itertools

Модуль itertools содержит множество инструментов для эффективного итерирования по элементам контейнеров. Эффективное в данном случае означает, что необходимое следующее значение генерируется на лету, без хранения всех значений, количество которых может быть очень большое. Рассмотрим несколько инструментов из этого модуля:

import itertools arr = list(range(5)) # arr = [0, 1, 2, 3, 4] for item in itertools.accumulate(arr): print(item, end=' ') # 0 1 3 6 10 for perm in itertools.permutations(arr): print(''.join(map(str, perm)), end=' ') # 01234 01243 01324 01342 01423 01432 . for comb in itertools.combinations(arr, 3): print(''.join(map(str, comb)), end=' ') # 012 013 014 023 024 034 123 124 134 234 

Время и дата с модулем datetime

Модуль datetime позволяет полноценно работать с объектами даты и времени:

from datetime import date, timedelta d1 = date.fromisoformat('2019-12-04') d2 = date(2002, 12, 31) d1  d2 # False delta = d1 - d2 delta.days # 6182 type(delta) # delta2 = timedelta(days=15) d3 = d1 + delta2 # 2019-12-19 d3.weekday() # 3 (Среда) d4 = date.today() # 2020-07-15 
import time from datetime import datetime dt1 = datetime.fromtimestamp(time.time()) # 2020-07-15 21:47:09.036145 dt2 = datetime.fromisoformat('2020-07-15 21:47:09.036145') dt2.timestamp() # 1594824429.036145 (секунд прошло с 1970-01-01) 

Резюме

В этом разделе мы выполнили краткий обзор возможностей некоторых стандартных модулей языка python. На этаме планирования нового проекта на python разумно изучить возможности существующих модулей (не только стандартных). Большое сообщество разработчиков и разнообразие доступных модулей являются сильными сторонами python.

Источники

  • docs.python.org/3/library/
  • PEP 206. Batteries Included Philosophy
  • Введение
  • Настройка рабочей среды
  • Язык C++
  • Язык Python
    • Основы синтаксиса языка python
    • Строки
    • Стандартные модули python, часть I
    • ООП в python
    • Стандартные модули II
    • Итераторы и генераторы
    • Вычисления с библиотекой numpy
    • Визуализация данных с matplotlib

    Что такое модули и библиотеки в Python

    Узнайте о модулях и библиотеках в Python, их использовании и важности для упрощения разработки и повторного использования кода.

    Person holding Python module and library books

    Алексей Кодов
    Автор статьи
    7 июня 2023 в 14:31

    Модули и библиотеки являются ключевыми элементами в мире Python, поскольку они значительно упрощают разработку и обеспечивают повторное использование кода. В этой статье мы разберемся, что такое модули и библиотеки, и как их использовать. ��

    Модули в Python

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

    Чтобы использовать модуль, его нужно импортировать с помощью инструкции import . Например, импортируем модуль math , который предоставляет математические функции:

    import math result = math.sqrt(16) print(result) # Выведет 4.0

    Библиотеки в Python

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

    Python имеет множество встроенных библиотек, таких как os , sys , math и других. Кроме того, существует огромное количество сторонних библиотек, доступных для установки и использования. Чтобы установить стороннюю библиотеку, можно использовать инструмент pip :

    pip install имя_библиотеки

    Для импорта библиотеки используется та же инструкция import , что и для модулей. Например, импортируем библиотеку requests для выполнения HTTP-запросов:

    import requests response = requests.get('https://api.example.com/data') print(response.json())

    Python-разработчик: новая работа через 9 месяцев
    Получится, даже если у вас нет опыта в IT

    Заключение

    Теперь вы знаете, что такое модули и библиотеки в Python, и как их использовать. Они являются мощным инструментом для повторного использования кода и упрощения разработки. Не стесняйтесь изучать и использовать различные модули и библиотеки, чтобы сделать ваш код более эффективным и легко читаемым. ��

    Удачи в изучении Python! Если у вас возникнут вопросы или вам понадобится дополнительная помощь, обратитесь к нашей знакомой онлайн-школе, которая хорошо учит по теме «Python-разработка».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *