Модулі 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)

Коли ви запускаєте програму, результат буде:

 Значення 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')

Цікаві статті...