Как импортировать модули в Python 3

Вступление

В языке программирования Python есть несколькоbuilt-in functions. Среди них несколько общих функций, в том числе:

  • print(), который выводит выражения

  • abs(), который возвращает абсолютное значение числа

  • int(), который преобразует другой тип данных в целое число

  • len(), который возвращает длину последовательности или коллекции

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

Modules - это файлы Python.py, состоящие из кода Python. Любой файл Python может быть указан как модуль. Файл Python с именемhello.py имеет имя модуляhello, который можно импортировать в другие файлы Python или использовать в интерпретаторе командной строки Python. Вы можете узнать о создании собственных модулей, прочитавHow To Write Modules in Python 3.

Модули могут содержатьdefine functions,classes иvariables, на которые вы можете ссылаться в других файлах Python.py или через интерпретатор командной строки Python.

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

Например, когда Python импортирует модуль с именемhello, интерпретатор сначала ищет встроенный модуль с именемhello. Если встроенный модуль не найден, интерпретатор Python затем будет искать файл с именемhello.py в списке каталогов, который он получает из переменнойsys.path.

Из этого туториала Вы узнаете, как проверять и устанавливать модули, импортировать модули и создавать псевдонимы.

Проверка и установка модулей

Существует ряд модулей, встроенных вPython Standard Library, который содержит множество модулей, обеспечивающих доступ к функциям системы или предоставляющих стандартизированные решения. Стандартная библиотека Python является частью каждой установки Python.

Чтобы проверить, что эти модули Python готовы к работе, введите в свойlocal Python 3 programming environment илиserver-based programming environment и запустите интерпретатор Python в командной строке следующим образом:

python

Из интерпретатора вы можете запустить операторimport, чтобы убедиться, что данный модуль готов к вызову, как в:

import math

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

Давайте запустим операторimport с модулем, который, возможно, у вас не установлен, например с библиотекой 2D-построенияmatplotlib:

import matplotlib

Еслиmatplotlib не установлен, вы получите следующее сообщение об ошибке:

OutputImportError: No module named 'matplotlib'

Вы можете деактивировать интерпретатор Python с помощьюCTRL + D, а затем установитьmatplotlib с помощьюpip.

Затем мы можем использоватьpip для установки модуляmatplotlib:

pip install matplotlib

После его установки вы можете импортироватьmatplotlib в интерпретатор Python с помощьюimport matplotlib, и он завершится без ошибок.

Импорт модулей

Чтобы использовать функции в модуле, вам необходимо импортировать модуль с помощью оператораimport.

Операторimport состоит из ключевого словаimport и имени модуля.

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

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

my_rand_int.py

import random

Когда мы импортируем модуль, мы делаем его доступным для нас в нашей текущей программе в виде отдельного пространства имен. Это означает, что нам придется обращаться к функции в точечной нотации, как в[module].[function].

На практике, на примере модуляrandom, это может выглядеть как такая функция, как:

  • random.randint(), который вызывает функцию для возврата случайного целого числа, или

  • random.randrange(), который вызывает функцию для возврата случайного элемента из указанного диапазона.

Давайте создадимfor loop, чтобы показать, как мы будем вызывать функцию модуляrandom в нашей программеmy_rand_int.py:

my_rand_int.py

import random


for i in range(10):
    print(random.randint(1, 25))

Эта небольшая программа сначала импортирует модульrandom в первую строку, а затем переходит в циклfor, который будет работать с 10 элементами. Внутри цикла программа напечатает случайное целое число в диапазоне от 1 до 25 (включительно). Целые числа1 и25 передаютсяrandom.randint() в качестве параметров.

Когда мы запускаем программу сpython my_rand_int.py, на выходе мы получим 10 случайных целых чисел. Поскольку они случайные, вы, вероятно, будете получать разные целые числа при каждом запуске программы, но они будут выглядеть примерно так:

Output6
9
1
14
3
22
10
1
15
9

Целые числа никогда не должны опускаться ниже 1 или выше 25.

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

my_rand_int.py

import random
import math

Вы можете увидеть программы, которые импортируют несколько модулей с разделителями их запятыми, как вimport random, math, но это не согласуется сPEP 8 Style Guide.

Чтобы использовать наш дополнительный модуль, мы можем добавить в нашу программу константуpi изmath и уменьшить количество выводимых случайных целых чисел:

my_rand_int.py

import random
import math


for i in range(5):
    print(random.randint(1, 25))

print(math.pi)

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

Output18
10
7
13
10
3.141592653589793

Операторimport позволяет вам импортировать один или несколько модулей в вашу программу Python, позволяя вам использовать определения, созданные в этих модулях.

Используяfromimport

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

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

В других программах вы можете увидеть, что операторimport принимает ссылки на все, что определено в модуле, с использованием звездочки (*) в качестве подстановочного знака, ноPEP 8 это не приветствует.

Давайте сначала посмотрим на импорт одной конкретной функцииrandint() из модуляrandom:

my_rand_int.py

from random import randint

Здесь мы сначала вызываем ключевое словоfrom, затемrandom для модуля. Затем мы используем ключевое словоimport и вызываем конкретную функцию, которую хотели бы использовать.

Теперь, когда мы реализуем эту функцию в нашей программе, мы больше не будем записывать функцию в точечной нотации какrandom.randint(), а вместо этого просто будем писатьrandint():

my_rand_int.py

from random import randint


for i in range(10):
    print(randint(1, 25))

Когда вы запустите программу, вы получите вывод, аналогичный тому, который мы получили ранее.

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

Модули алиасинга

Можно изменить имена модулей и их функций в Python, используя ключевое словоas.

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

Конструкция этого утверждения выглядит следующим образом:

import [module] as [another_name]

Давайте изменим имя модуляmath в нашем программном файлеmy_math.py. Мы изменим имя модуляmath наm, чтобы сократить его. Наша измененная программа будет выглядеть так:

my_math.py

import math as m


print(m.pi)
print(m.e)

В рамках программы мы теперь называем константуpim.pi, а неmath.pi.

Для некоторых модулей обычно используют псевдонимы. matplotlib.pyplot module’s official documentation требует использованияplt в качестве псевдонима:

import matplotlib.pyplot as plt

Это позволяет программистам добавлять более короткое словоplt к любой из функций, доступных в модуле, например,plt.show(). Вы можете увидеть, как этот оператор импорта псевдонима используется в нашем «https://www.digitalocean.com/community/tutorials/how-to-plot-data-in-python-3-using-matplotlib[Как отображать данные в Python 3 Использованиеmatplotlib tutorial] ».

Заключение

Когда мы импортируем модули, мы можем вызывать функции, которые не встроены в Python. Некоторые модули устанавливаются как часть Python, а некоторые мы установим черезpip.

Использование модулей позволяет нам сделать наши программы более надежными и мощными, поскольку мы используем существующий код. Мы также можем использоватьcreate our own modules для себя и других программистов в будущих программах.