Модули Python: научитесь создавать и импортировать собственные и встроенные модули

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

Видео: модули Python

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

Модули относятся к файлу, содержащему операторы и определения Python.

Файл, содержащий код Python, например:, example.pyназывается модулем, и его имя модуля будет example.

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

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

Создадим модуль. Введите следующее и сохраните как example.py.

 # Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result

Здесь мы определили функцию add()внутри модуля с именем example. Функция принимает два числа и возвращает их сумму.

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

Мы можем импортировать определения внутри модуля в другой модуль или в интерактивный интерпретатор в Python.

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

 >>> import example

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

Используя имя модуля, мы можем получить доступ к функции с помощью .оператора точки . Например:

 >>> example.add(4,5.5) 9.5

В Python есть множество стандартных модулей. Вы можете ознакомиться с полным списком стандартных модулей Python и вариантов их использования. Эти файлы находятся в каталоге Lib внутри того места, где вы установили Python.

Стандартные модули можно импортировать так же, как мы импортируем наши пользовательские модули.

Есть разные способы импорта модулей. Они перечислены ниже…

Оператор импорта Python

Мы можем импортировать модуль с помощью importоператора и получить доступ к определениям внутри него с помощью оператора точки, как описано выше. Вот пример.

 # import statement example # to import standard module math import math print("The value of pi is", math.pi)

Когда вы запустите программу, вывод будет:

 Значение пи составляет 3,141592653589793.

Импорт с переименованием

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

 # import module by renaming it import math as m print("The value of pi is", m.pi)

Мы переименовали mathмодуль в m. В некоторых случаях это может сэкономить нам время на набор текста.

Обратите внимание, что имя mathне распознается в нашей области. Следовательно, math.piнедействителен и m.piявляется правильной реализацией.

Python from… оператор импорта

Мы можем импортировать определенные имена из модуля, не импортируя модуль в целом. Вот пример.

 # import only pi from math module from math import pi print("The value of pi is", pi)

Здесь мы импортировали только piатрибут из mathмодуля.

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

 >>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045

Импортировать все имена

Мы можем импортировать все имена (определения) из модуля, используя следующую конструкцию:

 # import all names from the standard module math from math import * print("The value of pi is", pi)

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

Importing everything with the asterisk (*) symbol is not a good programming practice. This can lead to duplicate definitions for an identifier. It also hampers the readability of our code.

Python Module Search Path

While importing a module, Python looks at several places. Interpreter first looks for a built-in module. Then(if built-in module not found), Python looks into a list of directories defined in sys.path. The search is in this order.

  • The current directory.
  • PYTHONPATH (an environment variable with a list of directories).
  • The installation-dependent default directory.
 >>> import sys >>> sys.path ('', 'C:\Python33\Lib\idlelib', 'C:\Windows\system32\python33.zip', 'C:\Python33\DLLs', 'C:\Python33\lib', 'C:\Python33', 'C:\Python33\lib\site-packages')

We can add and modify this list to add our own path.

Reloading a module

The Python interpreter imports a module only once during a session. This makes things more efficient. Here is an example to show how this works.

Suppose we have the following code in a module named my_module.

 # This module shows the effect of # multiple imports and reload print("This code got executed")

Now we see the effect of multiple imports.

 >>> import my_module This code got executed >>> import my_module >>> import my_module

We can see that our code got executed only once. This goes to say that our module was imported only once.

Now if our module changed during the course of the program, we would have to reload it.One way to do this is to restart the interpreter. But this does not help much.

Python provides a more efficient way of doing this. We can use the reload() function inside the imp module to reload a module. We can do it in the following ways:

 >>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed 

The dir() built-in function

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

Например, мы определили функцию add()в модуле, exampleкоторый у нас был в начале.

Мы можем использовать dirв exampleмодуле следующим образом:

 >>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')

Здесь мы можем увидеть отсортированный список имен (вместе с add). Все остальные имена, начинающиеся с подчеркивания, являются атрибутами Python по умолчанию, связанными с модулем (не определяемыми пользователем).

Например, __name__атрибут содержит имя модуля.

 >>> import example >>> example.__name__ 'example'

Все имена, определенные в нашем текущем пространстве имен, можно узнать с помощью dir()функции без каких-либо аргументов.

 >>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')

Интересные статьи...