Как написать модуль пайтон

Modules are simply python code having functions, classes, variables. Any python file with .py extension can be referenced as a module. Although there are some modules available through the python standard library which are installed through python installation, Other modules can be installed using the pip installer, We can also create our own python module.

In this article, we will see how to create modules in python. 

Writing The Module

Any python code consisting of functions, classes, variables can be termed as a module. We will be writing a simple module that will be having a function, a class, and a variable.

Python

class Age:                    

    def __init__(self, name, years):    

        self.years = years

        self.name = name

    def getAge(self):                    

        print("The age of " + self.name +" is "+self.years)

def hello():                

  print('hello geeks!')

s = 'I love python!'            

Here in the above module, we have defined a class ‘Age’ having a __init__() and getAge() method which will be used to initialize the class object and getting the age of the object that would be passed, We have also defined a function hello() which will print ‘hello geeks!’ and also a string s which is ‘I love python!’.

We will name the above module made as mod.py and save it.

Importing The Module

Now we will discuss how to import a module and use its various functions, classes, variables from other python files. For this, we will make a file main.py in the same directory as mod.py. 

We will import the module with an import statement and use the functions, classes, variable as following:-

Using functions

For using the function from a module we will first import it and then will call the function with module_name.function_name(). For example, if we want to call the function hello() of mod.py in main.py we will first import mod.py and then call it with mod.hello().

Python

Output:

hello geeks!

Note: Please make sure that the main.py and mod.py are in the same directory.

We can also import only a separate function from a module to use it by writing: from module_name import function_name

And then call it directly. For example, if we want to call the function hello() of mod.py in main.py using the above method we will write the following code in main.py.

Python

from mod import hello         

hello()     

Output:

hello geeks!

Using Classes

We can use the classes to make various objects by module_name.class_name(). For example, if we want to create an object in main.py by the name ‘jack’ of class Age present in mod.py. We will write the following code in main.py:

Python

import mod          

jack = mod.Age('jack','21'

jack.getAge()                

Output:

The age of jack is 21

The way we imported only a particular function in the same way we can import only a particular class. The code for this will be:

Python

from mod import Age          

jack = Age('jack','21')    

jack.getAge()                

Output:

The age of jack is 21

Using Variables

For getting any variable from a module we have to first import the module, and then we can simply get it by module_name.variable_name. For example, if we want to print the variable with name s present in our mod.py module we will write the following code:

Python

Output:

I love python!

As we did for functions and classes in the same way we can import a particular variable from a module. For printing variable ‘s’ by this method the code will be:

Python

from mod import s         

print(s)    

Output:

I love python!

Modules are simply python code having functions, classes, variables. Any python file with .py extension can be referenced as a module. Although there are some modules available through the python standard library which are installed through python installation, Other modules can be installed using the pip installer, We can also create our own python module.

In this article, we will see how to create modules in python. 

Writing The Module

Any python code consisting of functions, classes, variables can be termed as a module. We will be writing a simple module that will be having a function, a class, and a variable.

Python

class Age:                    

    def __init__(self, name, years):    

        self.years = years

        self.name = name

    def getAge(self):                    

        print("The age of " + self.name +" is "+self.years)

def hello():                

  print('hello geeks!')

s = 'I love python!'            

Here in the above module, we have defined a class ‘Age’ having a __init__() and getAge() method which will be used to initialize the class object and getting the age of the object that would be passed, We have also defined a function hello() which will print ‘hello geeks!’ and also a string s which is ‘I love python!’.

We will name the above module made as mod.py and save it.

Importing The Module

Now we will discuss how to import a module and use its various functions, classes, variables from other python files. For this, we will make a file main.py in the same directory as mod.py. 

We will import the module with an import statement and use the functions, classes, variable as following:-

Using functions

For using the function from a module we will first import it and then will call the function with module_name.function_name(). For example, if we want to call the function hello() of mod.py in main.py we will first import mod.py and then call it with mod.hello().

Python

Output:

hello geeks!

Note: Please make sure that the main.py and mod.py are in the same directory.

We can also import only a separate function from a module to use it by writing: from module_name import function_name

And then call it directly. For example, if we want to call the function hello() of mod.py in main.py using the above method we will write the following code in main.py.

Python

from mod import hello         

hello()     

Output:

hello geeks!

Using Classes

We can use the classes to make various objects by module_name.class_name(). For example, if we want to create an object in main.py by the name ‘jack’ of class Age present in mod.py. We will write the following code in main.py:

Python

import mod          

jack = mod.Age('jack','21'

jack.getAge()                

Output:

The age of jack is 21

The way we imported only a particular function in the same way we can import only a particular class. The code for this will be:

Python

from mod import Age          

jack = Age('jack','21')    

jack.getAge()                

Output:

The age of jack is 21

Using Variables

For getting any variable from a module we have to first import the module, and then we can simply get it by module_name.variable_name. For example, if we want to print the variable with name s present in our mod.py module we will write the following code:

Python

Output:

I love python!

As we did for functions and classes in the same way we can import a particular variable from a module. For printing variable ‘s’ by this method the code will be:

Python

from mod import s         

print(s)    

Output:

I love python!

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

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

Подключение модуля из стандартной библиотеки

Подключить модуль можно с помощью инструкции import. К примеру, подключим модуль os для получения текущей директории:

>>> import os
>>> os.getcwd()
'C:\Python33'

После ключевого слова import указывается название модуля. Одной инструкцией можно подключить несколько модулей, хотя этого не рекомендуется делать, так как это снижает читаемость кода. Импортируем модули time и random.

>>> import time, random
>>> time.time()
1376047104.056417
>>> random.random()
0.9874550833306869

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

>>> import math
>>> math.e
2.718281828459045

Стоит отметить, что если указанный атрибут модуля не будет найден, возбудится исключение AttributeError. А если не удастся найти модуль для импортирования, то ImportError.

>>> import notexist
Traceback (most recent call last):
  File "", line 1, in
    import notexist
ImportError: No module named 'notexist'
>>> import math
>>> math.Ё
Traceback (most recent call last):
  File "", line 1, in
    math.Ё
AttributeError: 'module' object has no attribute 'Ё'

Использование псевдонимов

Если название модуля слишком длинное, или оно вам не нравится по каким-то другим причинам, то для него можно создать псевдоним, с помощью ключевого слова as.

>>> import math as m
>>> m.e
2.718281828459045

Теперь доступ ко всем атрибутам модуля math осуществляется только с помощью переменной m, а переменной math в этой программе уже не будет (если, конечно, вы после этого не напишете import math, тогда модуль будет доступен как под именем m, так и под именем math).

Подключить определенные атрибуты модуля можно с помощью инструкции from. Она имеет несколько форматов:

from <Название модуля> import <Атрибут 1> [ as <Псевдоним 1> ], [<Атрибут 2> [ as <Псевдоним 2> ] ...]
from <Название модуля> import *

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

>>> from math import e, ceil as c
>>> e
2.718281828459045
>>> c(4.6)
5

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

>>> from math import (sin, cos,
...           tan, atan)

Второй формат инструкции from позволяет подключить все (точнее, почти все) переменные из модуля. Для примера импортируем все атрибуты из модуля sys:

>>> from sys import *
>>> version
'3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)]'
>>> version_info
sys.version_info(major=3, minor=3, micro=2, releaselevel='final', serial=0)

Следует заметить, что не все атрибуты будут импортированы. Если в модуле определена переменная __all__ (список атрибутов, которые могут быть подключены), то будут подключены только атрибуты из этого списка. Если переменная __all__ не определена, то будут подключены все атрибуты, не начинающиеся с нижнего подчёркивания. Кроме того, необходимо учитывать, что импортирование всех атрибутов из модуля может нарушить пространство имен главной программы, так как переменные, имеющие одинаковые имена, будут перезаписаны.

Создание своего модуля на Python

Теперь пришло время создать свой модуль. Создадим файл mymodule.py, в которой определим какие-нибудь функции:

def hello():
    print('Hello, world!')

def fib(n):
    a = b = 1
    for i in range(n - 2):
        a, b = b, a + b
    return b

Теперь в этой же папке создадим другой файл, например, main.py:

import mymodule

mymodule.hello()
print(mymodule.fib(10))

Выведет:

Hello, world!
55

Поздравляю! Вы сделали свой модуль! Напоследок отвечу ещё на пару вопросов, связанных с созданием модулей:

Как назвать модуль?

Помните, что вы (или другие люди) будут его импортировать и использовать в качестве переменной. Модуль нельзя именовать также, как и ключевое слово (их список можно посмотреть тут). Также имена модулей нельзя начинать с цифры. И не стоит называть модуль также, как какую-либо из встроенных функций. То есть, конечно, можно, но это создаст большие неудобства при его последующем использовании.

Куда поместить модуль?

Туда, где его потом можно будет найти. Пути поиска модулей указаны в переменной sys.path. В него включены текущая директория (то есть модуль можно оставить в папке с основной программой), а также директории, в которых установлен python. Кроме того, переменную sys.path можно изменять вручную, что позволяет положить модуль в любое удобное для вас место (главное, не забыть в главной программе модифицировать sys.path).

Можно ли использовать модуль как самостоятельную программу?

Можно. Однако надо помнить, что при импортировании модуля его код выполняется полностью, то есть, если программа что-то печатает, то при её импортировании это будет напечатано. Этого можно избежать, если проверять, запущен ли скрипт как программа, или импортирован. Это можно сделать с помощью переменной __name__, которая определена в любой программе, и равна «__main__», если скрипт запущен в качестве главной программы, и имя, если он импортирован. Например, mymodule.py может выглядеть вот так:

def hello():
    print('Hello, world!')

def fib(n):
    a = b = 1
    for i in range(n - 2):
        a, b = b, a + b
    return b

if __name__ == "__main__":
    hello()
    for i in range(10):
        print(fib(i))

Для вставки кода на Python в комментарий заключайте его в теги <pre><code class=»python3″>Ваш код</code></pre>

Введение

Модули в Python – это файлы с расширением “.py”, написанные коды на языке Python. На любой файл написанный в Python можно ссылаться как на модуль.
Несколько модулей доступны после установки языка Python. Некоторые модули приходится устанавливать вручную.

Установку модулей вручную мы рассматривали в нашем руководстве про Импорт модулей в Python 3.
С помощью этого руководство вы поймёте как:

  • Написать модуль;
  •  Доступ к модулям из других директорий;
  • Использование переменной среды;
  • Модуль в переменной среде Python 3.

Подготовка к работе

У вас должен быть настроен дистрибутив под управлением Debian/Ubuntu/CentOS, настройка пользователя с правами sudo. Настроенная виртуальная среда языка Python. Рекомендуем заранее подготовиться перед приступлением к работе.

Написание и импортирование модулей

Первым делом стоит проверить версию Python с помощью:

python3 --version

На текущий момент актуальная версия 3.10.6. Если у вас старая версия, то обновите индекс пакетов и пакетов программного обеспечения с помощью:

sudo apt update && apt upgrade -y

Запустим виртуальную среду и с помощью текстового редактора Vim создадим новый файл с названием testingFile.py и добавим следующие строчки кода в самом начале указав шебанг. Шебанг – с помощью #! указываем путь к интерпретатору Python, подробнее рассмотрено в нашей инструкции.

#!/usr/bin/env python
# Определение функции
def test():
print(“This is test file”)

Если запустим с помощью:

python3 testingFile.py

То получим пустой результат. Необходимо создать второй файл и назовём test2.py и откроем с помощью vim и импортируем testingFile.py в файл test2.py и вызовем функцию test.

vim test2.py
#!/usr/bin/env python3
#Импорт файла
import testingFile
#Вызов функции из файла testingFile
testingFile.test()

Получим следующий результат, как на рисунке 1.

1

Рисунок 1 – Вызов функции из импортированного модуля

Мы импортируем модуль без использования “from testingFile import test”, нам необходимо вызывать функцию с помощью использованием названия модуля. Использование from … import можно рассмотреть в нашей инструкции.

Рассмотрим использование переменных в нашем модуле, добавим строчку в самом низу:

#!/usr/bin/env python3
# Определение функции
def test():
print("This is test file")
#Присвоение значения переменной
name = "serverspace"

Далее в файле test2.py в конце добавим строку изменив наш код в следующий вид:

#!/usr/bin/env python3
#Импорт файла
import testingFile
#Вызов функции из файла testingFile
testingFile.test()
#Вызов функции печати с использованием переменной
print(testingFile.name)

Результат приведён на рисунке 2.

2

Рисунок 2 – Вызов переменной из модуля

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

#!/usr/bin/env python3
# Определение функции
def test():
print("This is test file")
#Присвоение значения переменной
name = "serverspace"
#Определение класса
class TestingClass:
def __init__ (self, name, age):
self.name = name
self.age = age
def tell_me_about_TestingClass(self):
print("this class is " + self.name + ".")
print(self.name + " is the testing's name")

Теперь с помощью файла test2.py вызовем функцию инициализации и информацию о классе:

#!/usr/bin/env python3
#Импорт модуля
import testingFile
#Вызов функции
testingFile.test()
#Вывод информации из другого модуля
print(testingFile.name)
#Вызов функций из класса
server = testingFile.TestingClass("testingserver", "30 y.o.")
server.tell_me_about_TestingClass()

Результат приведён на рисунке 3.

3

Рисунок 3 – Вызов функций из класса TestingClass

Для начала создаём переменную с названием “server”, вызываем класс из модуля testingFile.py, присваиваем значения для переменной name “testingserver” и значение “30 y.o.” для переменной age.

Важно иметь ввиду, что модуль является определением, но в то же время можно реализовывать код. Рассмотрим новый пример модуля в файле test3.py

#!/usr/bin/env python3
def TestHello():
print(“Testing Hello, World!”)
#Вызов функции в модуле
TestHello()

Импортируем модуль в файл test4.py и проверим вызов функции TestHello:

#!/usr/bin/env python3
import test3

Получим результат в соответствии с рисунком 4.

4

Рисунок 4 – Вызов функции из модуля

Причина простая, внутри файла test3.py, создаём функцию с названием TestHello и внутри него реализуем функцию печати текста. Затем вызываем созданную функцию и импортируем в файл test4.py. Таким образом с помощью запуска test4.py вызываем функцию печать текста из функции TestHello.

Доступ к модулям из других директорий

Иногда некоторые модули полезны не только для одного проекта, но и для других проектов. По этой причине не обязательно хранить модуль в одной директории проекта. Можно создать для общего использования и ссылаться на эту директорию использовав несколько методов.

Использование переменной среды

Если модуль находится вне проекта, используем модуль sys и с его помощи укажем путь к среде, где находится файл с нужным модулем. Например, находясь в домашней директории создав файл test5.py, мы не сможем импортировать файл test3.py, который находится в директории с виртуальной средой. Рассмотрим, как указывать путь к файлу test3.py:

import sys
sys.path.append(‘/root/testing/’)
import test3

И получим успешный результат, как показано на рисунке 5.

5

Рисунок 5 – Полученный результат

Успешный результат можем получить при указании правильного пути к файлу test3.

Модуль в переменной среде Python 3

Данный метод считается эффективным решением, модуль получает доступность для всей среды и системы. Проверим какой путь проверяет Python с помощью команд

python3
import sys
print(sys.path)

Получим в результате пути проверки интерпретатора Python, как показано на рисунке 6.

6

Рисунок 6 – Общие пути проверки интерпретатора Python

Выбираем нужный путь и скопируем файл test3.py в нужный путь.

cp testing/test3.py /usr/lib/python3.10
python3 test5.py

В файле test5.py удалим импортирование модуля sys. Запустим код:


cat test5.py # чтобы удостовериться, что строка с импортированием sys удалён либо закомментирован
python3 test5.py

Получим результат как на рисунке 7.

7

Рисунок 7 – Получение доступа к модулю из общего пути

Копирование модуля в общий путь проверки интерпретатора Python оказалось наиболее эффективным. Причина в том, чтобы каждый раз не импортировать модуль sys в файлах кодов и указывать путь к нужному модулю, стоит скопировать нужный модуль в общий путь. Не стоит забывать о резервной копии нужных модулей, никто не исключает удаление нестандартных модулей после обновления пакетов Python.

Выводы

В данной инструкции мы рассмотрели такие возможности как:

  • Создание модуля;
  • Импортирование созданного модуля;
  • Ссылаться на модуль с помощью импортирования модуля sys из находясь в другой директории;
  • Добавление созданного модуля в общий путь интерпретатора Python;
  • Получили информацию об общих путях при поиске модуля с помощью командного интерпретатора Python.

На первый взгляд кажется сложным создать свой собственный модуль в Python, но мы можем с уверенностью сказать, что создание или написание программы Python – вполне простая задача.

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

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

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

Пример:

 
import module 

Предположим, что в модуле Python, то есть в модуле 1, присутствуют три функции, и мы хотим использовать только одну из них в нашем коде, тогда мы также можем импортировать только одну функцию, используя оператор from и import, как мы использовали ниже:

Пример:

 
import function1 from module1 

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

Написание модуля Python

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

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

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

Шаг 1. Написание работающей программы

Во-первых, мы должны написать исполняемую программу внутри оболочки Python, открыв в ней новый файл. Например, мы напишем следующую программу функции сложения внутри файла Python:

 
# A default Python function for performing addition 
def addition(x, y): # Two variables as parameters 
    # Adding two variables and storing results in another variable 
    addValue = x + y 
    # Returning the addition result for two numbers 
    return addValue 

Шаг 2. Сохранение файла

Теперь, после написания программы сложения, как указано в первом шаге, мы сохраним файл с именем add.py в каталоге по умолчанию, назначенном Python.

Шаг 2. Сохранение файла

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

 
# Importing the adding module in the program 
import adding 
# Taking two input variables from the user 
a1 = int(input("Enter first integer variable: ")) 
a2 = int(input("Enter second integer variable: ")) 
# Adding the variables with the function of 'adding' module 
addResult = addition(a1, a2) 
# Printing the result in the output 
print("The sum of two integer variables given by you is: ", addResult) 

Вывод:

Enter first integer variable: 26 
Enter second integer variable: 24 
The sum of two integer variables given by you is: 50 

Объяснение:

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

Вывод

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

С помощью модуля Python мы можем сделать наш код логически организованным и сгруппировать аналогичный код в один модуль.

Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.


Содержание

  • 1. Концепция модуля. Структурирование программ с помощью модулей. Атрибуты модуля. Импорт модуля
  • 2. Необходимость использования модулей
  • 3. Организация приложений на языке Python. Главный файл программы при модульном построении. Второстепенные файлы
  • 4. Пример организации программы, состоящей из трех файлов. Рисунок
  • 5. Создание модуля средствами Python
  • 6. Способы подключения содержимого других модулей
  • 7. Доступ ко всему модулю. Инструкция import
  • 8. Доступ отдельным компонентам модуля. Инструкция from-import
  • 9. Доступ к именам модуля. Инструкция from*
  • Связанные темы

Поиск на других ресурсах:

1. Концепция модуля. Структурирование программ с помощью модулей. Атрибуты модуля. Импорт модуля

При написании больших программ или при увеличении размера программы все больше становится потребность в правильном (корректном) разбиении программы на структурно-независимые части. Целью такого структурирования является:

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

Для обеспечения структурирования в языке Python используются так называемые модули. Модуль – это программная единица, содержащая программный код и данные и предназначенная для организации взаимодействия между структурно-независимыми (структурно-уникальными) частями программы. Каждому модулю соответствует соответствующий файл программы. И, наоборот, каждый файл – это отдельный модуль.

Любой отдельный модуль может быть импортирован (подключен, использован) другим модулем. Также модуль может импортировать (использовать) другой модуль.

Компоненты, реализуемые в модуле, называются атрибутами. Компоненты – это имена переменных связанных с функциями, объектами, классами и т.д.

Также возникает понятие импорт модуля. Импорт модуля – это подключение модуля с помощью специальных инструкций с целью получения доступа к программным средствам (инструментам) этого модуля. После импорта становятся доступными для использования атрибуты модуля.

 

2. Необходимость использования модулей

Использование модулей позволяет структурировать программные компоненты в автономные пакеты, которые называются пространствами имен. Как в любом пространстве имен при импорте модуля, все имена являются атрибутами объекта импортируемого модуля. Эти имена описываются в глобальной области видимости импортируемого модуля.

Использование модулей важно по следующим причинам:

  • повторное использование кода. Каждый модуль представлен в виде файла. Это позволяет подключать его код в разных (нескольких) клиентских частях программы. В модуле формируется набор имен или, другими словами, набор атрибутов этого модуля;
  • распределение пространств имен. Модули являются естественным методом группировки компонент программной системы. С помощью модулей имена изолируются, что позволяет избежать конфликта и путаницы в именах. Имена, используемые в модулях, сгруппированы по некоторым критериям. Объекты и программный код неявно включены в модули;
  • совместное использование программных компонентов и данных. Здесь имеется в виду, что один и тот же модуль может использоваться в различных компонентах программной системы. Модуль только один – клиентских программных компонентов несколько.

 

3. Организация приложений на языке Python. Главный файл программы при модульном построении. Второстепенные файлы

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

Если главный файл не будет импортирован в другие файлы, его расширение может быть любым (не обязательно расширение *.py). Важно, чтобы это расширение имело все остальные модули, подключаемые в этом файле. В любом случае, рекомендуется задавать расширение главного файла как *.py, так как это расширение делает назначение данного файла более очевидным и в дальнейшем позволит его импортировать в другие файлы.

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

 

4. Пример организации программы, состоящей из трех файлов. Рисунок

На рисунке 1 изображен пример организации программы, состоящей из трех файлов:

  • main.py – главный файл программы. Из окна редактора этого файла производится запуск программы и подключение второстепенных модулей;
  • figures.py, strings.py – второстепенные файлы программы, импортируемые в файл main.py. Файл figures.py содержит функции определения характеристик известных фигур. Файл strings.py содержит функции обработки строк. Эти файлы не запускаются как второстепенные программы.

Python. Схема подключения дополнительных модулей и их использование

Рисунок 1. Схема подключения дополнительных модулей и их использование

Как видно из рисунка 1, в модуле figures.py объявляются функции Circumference(), AreaCircle(), VolumeSphere(). Также в модуле strings.py объявляются функции ReverseString() и GetCharCount(). Для доступа к функциям модулей figures.py и strings.py в модуле main.py происходит следующее подключение

import figures, strings

После этого можно обращаться к функциям модулей с помощью синтаксиса

figures.Circumference()
figures.AreaCircle()
figures.VolumeSphere()
strings.ReverseString()
strings.GetCharCount()

В свою очередь в модуле figures.py подключаются файлы стандартной библиотеки math

import math

которая содержит математические функции и константы. Модуль figures.py использует константу

math.pi

которая возвращает число π = 3.1415… .

Архитектуру программы, изображенной на рисунке 1, можно представить следующим образом (рисунок 2).

Python. Архитектура программы, содержащей 3 файла

Рисунок 2. Архитектура программы, содержащей 3 файла

 

5. Создание модуля средствами Python

В классическом Python модуль создается вызовом стандартной команды создания файла с расширением *.py. Одним из возможных вызовов есть:

File -> New File

или комбинация клавиш Ctrl+N как показано на рисунке 3.

Python. Команда создания нового модуля

Рисунок 3. Создание нового модуля в Python 3.0

В результате будет создан файл с именем Untitled.py, который в дальнейшем следует сохранить на постоянный носитель (жесткий диск или другой носитель) с одновременным указанием его имени. Это имя будет идентифицировать модуль в других модулях, которые его будут использовать.

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

 

6. Способы подключения содержимого других модулей

Подключение модуля (файла с расширением *.py) производится с помощью следующих инструкций:

  • import – здесь подключается весь модуль;
  • from – здесь подключается отдельный компонент модуля;
  • from* – здесь подключаются все имена заданного модуля.

Ниже более подробно рассматриваются все три способа.

 

7. Доступ ко всему модулю. Инструкция import

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

import ModuleName

здесь

  • ModuleName – имя подключаемого модуля. Это файл с расширением *.py. В этом случае подключается файл ModuleName.py. В файле описывается программный код с данными, которые необходимо использовать в текущем модуле. Имя файла ModuleName.py заменяется на имя переменной ModuleName. Соответствующие компоненты (составляющие) этого файла являются атрибутами переменной ModuleName.

После подключения директивой import обращение к элементу из этого модуля выглядит примерно так

ModuleName.ItemName

здесь

  • ItemName – имя элемента из модуля ModuleName. Элементом может быть, например, имя функции, глобальная переменная, имя класса и т.п.

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

Пример.

Пусть в редакторе Python были созданы два модуля с именами module01.py и module02.py. Эти модули размещаются в одной и той же папке (каталоге).

В модуле module02.py реализована функция определения характеристик известных геометрических фигур:

  • Circumference() – длины круга;
  • AreaCircle() – площади круга;
  • VolumeSphere() – объем шара.

Текст модуля module02.py

# Модуль module02.py

# Здесь объявлены функции вычисления характеристик известных фигур.
# Подключить модуль math для того, чтобы использовать
# константу math.pi и функцию math.pow()
import math

# Функция вычисления длины окружности
def Circumference(r):
    return 2*math.pi*r

# Функция вычисления площади круга
def AreaCircle(r):
    return path.pi*r*r

# Функция вычисления объема шара
def VolumeSphere(r):
    return 4.0/3.0 * math.pi*r*r*r

Чтобы использовать эти функции в модуле module01.py, нужно подключить module02.py с помощью инструкции

import module02.py

Демонстрационный текст модуля module01.py следующий

# Модуль module01.py
# Подключить модуль module02.py
import module02

# Использование функций модуля module02.py
# 1. Вычислить длину окружности
print("Circumference(2.0) = ", module02.Circumference(2.0))

# 2. Вычислить площадь круга
print("AreaCircle(2.0) = ", module02.AreaCircle(2.0))

# 3. Вычислить объем шара
print("VolumeSphere(2.0) = ", module02.VolumeSphere(2.0))

После запуска на выполнение модуля module01.py программа отобразит следующий результат

Circumference(2.0) = 12.566370614359172
AreaCircle(2.0) = 12.566370614359172
VolumeSphere(2.0) = 33.510321638291124

 

8. Доступ отдельным компонентам модуля. Инструкция from-import

В Python есть возможность получить упрощенный доступ к элементам модуля с помощью инструкции from-import. В общем случае использование данной инструкции следующее:

from ModuleName import ItemName

здесь

  • ModuleName – имя модуля, к элементам которого нужно получить доступ;
  • ItemName – имя элемента модуля. Элементом модуля могут быть класс, функция, глобальная константа и т.д.

После такого подключения можно обращаться к элементу ItemName без указания имени ModuleName и символа ‘ . ‘ (точка).

Пример.

Чтобы получить сокращенный доступ к функции sin() из библиотеки math, нужно использовать следующую инструкцию

from math import sin

После этого можно вызвать функцию sin() без указания имени модуля math

y = sin(0.5) # получить синус от 0.5 радиан

 

9. Доступ к именам модуля. Инструкция from*

Инструкция from имеет специальную форму from*. Эта форма позволяет копировать имена модуля в текущий модуль так, что имя этого модуля не нужно использовать при обращении к его компоненту. Это позволяет сократить ввод с клавиатуры и повысить читабельность программы.

Пример.

В примере импортируются имена из модуля random. Этот модуль содержит функции генерирования случайных чисел. В целях демонстрации вызывается функция randrange(), которая генерирует целое число в заданном интервале. На основе вызова randrange() формируется список из 10 целых чисел.

# Импортировать все компоненты из модуля random
from random import *

# Сформировать список случайных целых чисел,
# каждое из которых лежит в диапазоне [0; 20]

# 1. Сформировать пустой список
L = []

# 2. Цикл формирования списка L
i = 1
while i<=10:
    # Вызвать функцию из модуля random
    num = randrange(0, 20)

    # Добавить число к списку
    L = L + [num]

    # Увеличить счетчик
    i = i+1

# 3. Вывести результат
print("L = ", L)

Результат

L = [3, 18, 0, 19, 16, 10, 14, 0, 4, 14]

 


Связанные темы

  • Импорт модуля. Последовательность действий: поиск-компиляция-запуск. Список sys.path. Схема выполненных действий

 


Понравилась статья? Поделить с друзьями:
  • Как написать модератору сайта одноклассники
  • Как написать модераторам тик ток
  • Как написать модераторам телеграмм
  • Как написать модельному агентству
  • Как написать модель угроз