В тази статия ще се научите да създавате и импортирате персонализирани модули в 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)
Когато стартирате програмата, изходът ще бъде:
Стойността на 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 от … изявление за импортиране
Можем да импортираме конкретни имена от модул, без да импортираме модула като цяло. Ето един пример.
# 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')