Модули Python
Модули 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)
Когда вы запустите программу, вывод будет:
The value of pi is 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)
Здесь мы импортировали все определения из математического модуля. Это включает в себя все имена, видимые в нашей области, кроме тех, которые начинаются с подчеркивания (частные определения).
Импорт всего со звездочкой (*) не является хорошей практикой программирования. Это может привести к дублированию определений идентификатора. Это также ухудшает читабельность нашего кода.
<час>Путь поиска модуля Python
При импорте модуля Python просматривает несколько мест. Сначала интерпретатор ищет встроенный модуль. Затем (если встроенный модуль не найден) Python просматривает список каталогов, определенных в sys.path
. . Поиск осуществляется в этом порядке.
- Текущий каталог.
PYTHONPATH
(переменная среды со списком каталогов).- Каталог по умолчанию, зависящий от установки.
>>> 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']
Мы можем добавлять и изменять этот список, чтобы добавить наш собственный путь.
<час>Перезагрузка модуля
Интерпретатор Python импортирует модуль только один раз за сеанс. Это делает вещи более эффективными. Вот пример, показывающий, как это работает.
Предположим, у нас есть следующий код в модуле с именем my_module
.
# This module shows the effect of
# multiple imports and reload
print("This code got executed")
Теперь мы видим эффект множественного импорта.
>>> import my_module
This code got executed
>>> import my_module
>>> import my_module
Мы видим, что наш код был выполнен только один раз. Это говорит о том, что наш модуль был импортирован только один раз.
Теперь, если наш модуль изменился в ходе работы программы, нам пришлось бы перезагрузить его. Один из способов сделать это — перезапустить интерпретатор. Но это мало помогает.
Python предоставляет более эффективный способ сделать это. Мы можем использовать reload()
функция внутри imp
модуль для перезагрузки модуля. Мы можем сделать это следующими способами:
>>> import imp
>>> import my_module
This code got executed
>>> import my_module
>>> imp.reload(my_module)
This code got executed
<module 'my_module' from '.\\my_module.py'>
<час> Встроенная функция dir()
Мы можем использовать 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']
Python