Основне меню  

   

Реклама  

Скачуйте відеуроки для створення сайту за допомогою SMS Joomla 

реклама

 

 

   

Ми в Facebook  

Калькулятор расчета пеноблоков смотрите на этом ресурсе
Все о каркасном доме можно найти здесь http://stroidom-shop.ru
Как снять комнату в коммунальной квартире смотрите тут comintour.net
   

Реклама в мережі  

   

Статистика  

Користувачі
1
Статті
180
Перегляди статей
595311
   

Пошук по сайту  

   

Ми знаходимось тут  

   

Випадкове фото  

   

Наш відеоканал  

   

Відвідування сайту  

Яндекс.Метрика

 

   

Посібник Delphi  

ДОСТУПНИЙ ВИКЛАД,

ЦІКАВІ ПРИКЛАДИ, ВИХІДНІ КОДИ.

ЦІНА ДИСКА З МАТЕРІАЛАМИ - 500 грн. 

Якщо ваша карта обслуговується ПриватБанком тоді переведіть потрібну суму через Приват24 на карту    5168 7573 0556 9925 або натисніть на посилання "Перейти до оплати", щоб здійснити миттєвий платіж без комісії. Перейти до оплати!

 Звертайтесь за адресою еmail:kuzbyt@ukr.net

 
   

Відеокурс по С++  

   

Рекомендуємо:  

   

Ми в контактах  

   

Сайти  

Українські уроки про ІТ

Єдина Країна! Единая Страна!

 

Українські уроки про програмування

 

 
   

Модулі

Вступ

У попередньому уроці ми з вами освоїли дуже важливий урок – Класи в мові Python. Як ми пам’ятаємо, клас є таким собі об’єднанням змінних та функцій під одним дахом. Програмістський словник називає дану властивість класів (об’єднання усіх змінних та функцій разом) інкапсуляцією. В будь-якому випадку це дуже зручно тримати усі наші функції та змінні в одному місці таким чином, щоб потім перевикористовувати даний код у багатьох інстансах і місцях в коді.

І напевне у вас на даний момент виникає питання: “як я можу використовувати мої класи у різних місцях, у різних програмах?”. Відповідь полягає у тому, щоб покласти наш клас в МОДУЛЬ, так щоб ми могли пізніше імпортнути його з іншого місця в інших наших програмах.

Що таке модуль?

 

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

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

### приклад пітонівського модуля

 

# визначаємо деякі змінні

years = 8

apples = 23

 

# визначаємо деякі функції

def hello_world():

    print "hi there"

 

def multiply(value):

    print value * 4

 

# визначаємо клас Стола (Table)

class Table:

 

    def __init__(self):

        self.color = raw_input(u"Який колір стола? ")

        self.height = raw_input(u"Яка висота стола? ")

        self.price = raw_input(u"Яка ціна стола? ")

 

    def details(self):

        """Друкуємо деталі про даний стіл"""

        print u"Цей стіл має висоту " + self.height + " метрів"

        print u"Цей стіл коштує " + self.price + " гривень"

Як ви можете бачити, модуль виглядає в принципі так само як звичайна програма на мові Пітон.

То ж що ми робимо з модулем? Ми імпортуємо (‘import’) частинки з нього, або все що у ньому є, в інші програми, і використовуємо його змінні, функції та класи.

Щоб імпортнути змінні, функції та класи наприклад з модуля ‘moduletest.py’ в іншу програму, яку ми створюємо, ми використовуємо оператор ‘import’. Наприклад, щоб імпортнути сам модуль ‘moduletest.py’, у нашу головну програму, ми використаємо оператор ‘import’ наступним чином:

 

1

2

3

# це головна програма наша - mainprogam.py

# імпортуємо інший модуль, під назвою moduletest

import moduletest

Вище наведений приклад працюватиме у випадку, якщо модуль ‘moduletest.py’ лежить у ті й же ж папочці, де ми маємо нашу основну програму (назвемо її ‘mainprogram.py’), або також, якщо цей модуль є дефолтним, вбудованим у саму мову Пітон. Зауважте, ми не вказуємо розширення файшлу ‘.py’, при використанні оператора ‘import’. Зазвичай ми розташовуємо усі необхідні імпорти на початку нашої програми, але технічно вони можуть бути у будь-якому місці програми. Для того, щоб використовувати речі з імпортованого модуля, ми робимо наступні речі:

 

1

2

3

4

5

6

7

# використання імпортованих змінних, функцій та класів;

# для цього використовуємо форму <назва імпортованого модуля>.<назва змінної>

 

# Приклади:

print moduletest.years

stil = moduletest.Table()

stil.details()

Як ви бачите, модулі, які ми з вами імпортували, працюють подібним чином до пітонівських класів – все, що знаходиться всередині модуля, ми можемо дістати через назву модуля (наперед імпортованого) плюc символ крапки. Тобто ‘modulename.’ дозволить доступитися до внутрішніх змінних та функції даного модуля.

І ще кілька фішок по модулях

Бажаєте позбутися використання усюди префіксу ‘modulename.’ ? Без проблем. Один із варіантів уникати його – імпортувати необхідні змінні, функції чи класи з модуля напряму, по імені даної змінної чи функції. Щоб зробити це, потрібно також скористатися додатковим оператором ‘from’ поєднуючи з уже відомим нам оператором ‘import’.

Уявимо, що модуль ‘moduletest’ має змінну ‘years’ та функцію ‘hello_world’. От як виглядатиме їхній імпорт з даного модуля:

 

1

2

3

4

5

from moduletest import hello_world

from moduletest import years

 

# або також ми можемо імпортнути кілька імен одним рядочком, через кому

from moduletest import hello_world, years

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

Якщо б ви хотіли, ви також можете імпортнути усе з модуля, одним махом. Це можна зробити використовуючи спеціальний запис – зірочку ‘*’. Звичайно, це може мати негативні ефекти у окремих випадках. Наприклад, якщо ви у своїй головній програмі імпортуєте УСЕ з більш ніж одного модуля, і у цих модулях є змінні чи функції з однаковими назвами. У таких випадках імпортування використовуючи запис зірочки – не підходить. Також з великими модулями краще не бавитися зірочкою, а імпортувати лише необхідні речі, напряму вказуючи їхні імена у рядку імпорту.

 

1

2

3

4

5

6

# імпортуємо усе з модуля moduletest

from moduletest import *

 

# після цього маємо в полі імен нашого поточного файлика усі

# змінні, функції та класи з вище імпортованого модуля

print hello_world()

Ще одна фішка. У випадку, якщо вам треба скористатися змінними чи функціями з різних модулів, і дані змінні чи функції мають однакові назви, тоді ви можете використати оператор ‘as’ у поєднанні з ‘from’ та ‘import’ для того, щоб призначити даним проблематичним (дублікатам) назвам інше локальне (локальне для даної головної програми) ім’я. Наприклад, уявимо, що в модулі module1 є функція hello_world, і в модулі module2 є визначена функція із такою ж назвою. Ось як ми можемо цю проблему ‘розрулити’ під час імпорту:

 

1

2

3

4

5

6

7

8

9

10

11

# імпортуємо функцію hello_world з модуля module1

# і присвоюємо їй локальну назву hello_world_1

from module1 import hello_world as hello_world_1

 

# а тепер функцію hello_world з модуля module2

from mobule2 import hello_world as hello_world_2

 

# таким чином в просторі локальних імен маємо два нових імені

# hello_world_1 та hello_world_2, але не hello_world

print hello_world_1()

print hello_world_2()

Ще є можливість, починаючи з Пітона версії 2.5, імпортувати з пакетів і модулів використовуючи так звані відносні шляхи. Але це вже більш розширена тема, і в даному уроці її розглядати не будемо.

Ніби усе по фішках.

На завершення

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

Вітаю з проходженням чергового, уже 9-го уроку! Так тримати!

Якщо з’явилися питання, чи знайшли неточності – дуже прошу коментувати. Буде вирішувати проблеми і виправляти помилки.

У наступному уроці ми з вами спробуємо розібратися у файлах вводу та виводу. Буде цікаво!

Чекаю на ваші коментарі:

 

 

Додати коментар

Захисний код
Оновити

   

Поділіться з друзями

 
   

Сайт для перевірки своїх знань з програмування на сайті:http://www.quizful.net/test


 Розробка сайтів, інтернет-магазинів під ключ. Створення програмного забезпечення для обліку в магазинах,

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

 

Звертайтесь за адресою email:kuzbyt@ukr.net

 

 

© (C) Sambir, I.Kuzbyt