Створення модулів Python 3

Пропозиція від 8host.com

створення

Модулі Python – це файли з розширенням .py, які містять Python. На будь-який файл Python можна послатися як модуль.

Деякі модулі можна знайти в Python Standard Library, деякі встановлюються разом з Python за замовчуванням. Також можна встановити модулі за допомогою менеджера пакетів pip. Більше того, Python дозволяє вам самостійно писати модулі (оскільки модулі складаються з файлів .py).

Цей посібник навчить вас створювати модулі Python і використовувати їх всередині інших файлів програми.

Написання та імпорт модулів

Написати модуль – те саме, що написати будь-який інший файл Python. Модулі можуть містити визначення функцій, класів і змінних, які можна використовувати в інших програмах Python. Спробуємо написати модуль.

Читайте також:

Розгорніть середовище розробки та створіть тестовий файл hello.py, який можна імпортувати в інший файл. Додайте до файлу функцію:

def world(): print("Hello, World!")

Якщо запустити цей файл за допомогою команди:

то нічого не станеться, тому що він не каже програмі, що їй робити.

Тепер створіть у тому ж каталозі файл main_program.py, імпортуйте створений модуль та викличте функцію. Ці файли повинні знаходитися в одному каталозі, щоб Python міг знайти модуль (оскільки цей модуль не вбудований).

# Імпортуйте модуль hello import hello # Викличте функцію hello.world()

Імпортувавши модуль, необхідно викликати функцію за допомогою посилання на ім'я модуля в точковій нотації.

Також можна імпортувати модуль так:

з hello import world

і викликати функцію безпосередньо якworld().

Запустіть програму в командному рядку:

У терміналі з'явиться:

Тепер спробуйте додати до hello.py змінну.

# Визначте функцію def world(): print("Hello, World!") # Визначте змінну 8host = "8Host"

Викличте змінну функції print() у файлі main_program.py:

# Імпортуйте модуль hello import hello # Викличте функцію hello.world() # Відобразіть змінну print(hello.8host)

Спробуйте запустити програму. Ви отримаєте такий результат:

Hello, World! 8Host

Тепер спробуйте визначити клас у файлі hello.py. Створіть клас User з атрибутами name та mood та функцією, яка виведе атрибути.

# Визначте функцію def world(): print("Hello, World!") # Визначте змінну 8host = "8Host" # Визначте клас class User: def __init__(self, name, mood): self.mood = mood self.name = name def tell_me_about_the_user(self): print("This user is " + self. mood + ".") print(self.name + " is the user's name.")

Потім додайте клас до кінця файлу main_program.py:

# Імпортуйте модуль hello import hello # Викличте функцію hello.world() # Відобразіть змінну print(hello.8host) # Викличте клас jesse = hello .User("Jesse", "sad") jesse.tell_me_about_the_user()

Викликавши клас User за допомогою hello.User(), можна отримати доступ до функцій і атрибутів класу в просторі імен файлу main_program.py. Тому в останньому рядку можна написати jesse.tell_me_about_the_user(), не викликаючи hello. Також можна викликати один із атрибутів класу (наприклад, jesse.mood), не посилаючись на модуль hello.

Запустивши програму, ви отримаєте такий висновок:

Hello, World! 8Host Ця user is sad. Jesse is the user's name.

Важливо мати на увазі, що хоча модулі часто зберігають визначення, вони можуть реалізувати код. Щоб побачити, як це працює, перепишіть файл hello.py так, щоб він реалізував функцію world():

# Визначте функцію def world(): print("Hello, World!") # Викличте функцію всередині модуля world()

Тепер у файлі main_program.py потрібно видалити всі рядки, крім виразу import:

Запустіть програму main_program.py, і ви отримаєте:

Модуль hello реалізує функцію world(), яка потім передається в main_program.py і виконується під час запуску main_program.py.

Доступ до модулів з іншого каталогу

Модулі можна використовувати відразу у кількох проектах чи програмах. У такому разі тримати всі файли в одному каталозі складно та незручно. Файли найкраще зберігати в окремих каталогах проектів.

Припустимо, ви хочете використовувати модуль одного проекту в іншій програмі. Цього можна досягти кількома способами.

Додавання шляху

Одним із варіантів є виклик шляху модуля через програмні файли, які використовують цей модуль. Цей метод слід розглядати як тимчасове рішення на етапі розробки (це дозволяє зробити модуль доступним у межах всієї системи).

Щоб додати шлях модуля до іншого файлу, імпортуйте модуль sys разом з іншими модулями, які потрібно використовувати в головному файлі програми.

Модуль sys можна знайти у Python Standard Library; sys надає індивідуальні системні параметри та функції, за допомогою яких можна встановити шлях необхідного модуля.

Припустимо, ви перемістили файл hello.py в /usr/8host/, а файл main_program.py залишився у попередньому каталозі.

Щоб імпортувати hello у файл main_program.py, імпортуйте модуль sys і додайте шлях /usr/8host/, де Python зможе знайти потрібний файл.

import sys sys.path.append('/usr/8host/') import hello .

Якщо ви правильно вказали шлях до файлу hello.py, ви зможете запустити файл main_program.py без жодних помилок і отримаєте такий самий висновок, як і раніше, коли обидва файли зберігалися в одному каталозі.

Додавання модуля в дорогу Python

Другий варіант – це додати модуль у шлях, яким Python шукає модулі і пакети. Це зручніше та гнучкіше рішення, яке можна використовувати на постійній основі; так модуль стане доступним у рамках поточного середовища чи всієї системи.

Щоб дізнатися про шлях Python, запустіть інтерпретатор Python у середовищі розробки:

Імпортуйте модуль sys:

Потім відобразіть шлях Python за допомогою функції:

Ця команда виведе принаймні один системний шлях. Якщо ви перебуваєте в середовищі розробки, ви можете отримати кілька таких шляхів. Знайдіть шлях для поточного середовища; також можна додати модуль до головного, загальносистемного шляху Python. Шлях виглядає приблизно так:

Перемістіть файл hello.py до цього каталогу. Після цього можна імпортувати модуль hello стандартним чином:

Програма має працювати без помилок.

Висновок

Насправді модулі Python пишуться так само, як і будь-які інші файли з розширенням .py.

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