- •Міністерство освіти і науки україни
- •Укладачі: Романюк а. Б., канд. Техн. Наук, ст. Викладач
- •1.2 Функції накопичення
- •Функція використовує рекурсію – техніку яка буде розглядатися в подальшому. Перестановки слів у наборах слів корисно використовувати при створенні даних для тестування граматик.
- •1.3 Функції вищого рівня
- •1.4 Зазначені (поіменовані) аргументи.
- •2. Розробка програми
- •2.1 Структура модуля в Python
- •2.3 Помилки
- •2.2 Багатомодульні програми
- •2.4 Техніка налагодження (зневаджування) програм
- •3. Розробка алгоритму програми
- •3.1 Рекурсія
- •3.2 Динамічне програмування
- •4. Приклади бібліотек Python
- •4.1 Matplotlib
- •4.2 NetworkX
- •4.3 Csv
- •4.4 NumPy
- •4.5 Інші бібліотеки
- •Порядок виконання роботи
- •Зміст звіту
- •Інтернет посилання
- •Методичні вказівки
- •Укладачі: Романюк Андрій Богданович
2. Розробка програми
Програмування потребує уміння, навичок та майстерності, які набуваються в результаті досвіду програмування на різних мовах програмування та при вирішення різних задач, протягом декількох років. Вищий рівень програмування передбачає розвиток спосібностей по розробці алгоритмів та їх реалізації в структурному програмуванні. Нижчий рівень, передбачає освоєння синтаксичних конструкцій мови та набуття знань по методах діагностики програм для вивлення помилок в їх роботі.
2.1 Структура модуля в Python
Мета розробки модулів програми - виділити логічно пов’язані визначення і функції для спрощення їх повторного використання та розуміння. Модуль вPython не що інше, як окремий *.py файл. Наприклад, для роботи з форматом певного корпусу, функції читання та запису цього формату повинні бути зібрані разом. Константи, які використовуються (розділювачі полів, чи розширення імен файлів EXTN = ".inf") повинні бути спільні. Якщо формат буде змінено, то ці зміни потрібно буде внести тільки в один файл. Аналогічно, модуль може містити текст програми для створення і маніпулювання певними структурами даних, наприклад синтаксичними деревами, або текст програми для виконання певної задачі, наприклад друк статистичних даних корпусу.
Перед створенням модулів Python корисно розглянути приклади. Можна знайти скомпільовані модулі NLTK на жорсткому диску використовуючи змінну__file__ , наприклад.:
|
Отриманий результат це місцезнаходження скомпільованого (distance.pycмістить скомпільовану на рівні байтів версію модуля) файла *.pyc цього модуля на жорсткому диску. Використання скомпільованих версій значно прискорює запуск коротких програм та дозволяє зберігати останню робочу версію програми. У більшості випадків для створення файла *.pycне потрібно нічого робити. Як тільки *.pyстворено і запущено на виконання, інтерпретатор зробить спробу записати скомпільовану версію у*.pyc.
Подібно до інших модулів NLTK, модульdistance.py починається з послідовності стрічок з коментарями в яких записана назва модуля та інформація про його авторів. Далі йдуть стрічки документування в потрійних лапках, з інформацією про модуль, яка буде виводитись на екран при наборіhelp(nltk.metrics.distance).
# Natural Language Toolkit: Distance Metrics
#
# Copyright (C) 2001-2009 NLTK Project
# Author: Edward Loper <edloper@gradient.cis.upenn.edu>
# Steven Bird <sb@csse.unimelb.edu.au>
# Tom Lippincott <tom@cs.columbia.edu>
# URL: <http://www.nltk.org/>
# For license information, see LICENSE.TXT
#
"""
Distance Metrics.
Compute the distance between two items (usually strings).
As metrics, they must satisfy the following three requirements:
1. d(a, a) = 0
2. d(a, b) >= 0
3. d(a, c) <= d(a, b) + d(b, c)
"""
Далі в модулі записують стрічки програми, які здійснюють імпорт всіх необхідних змінних, функцій та модулів. В наступних частинах модуля описуються глобальні змінні та визначаються функції, які складають основну частину модуля. (Більшість модулів NLTK містять функціюdemo(), яка дозволяє переглянути приклад використання модуля.)
Якщо певні змінні та функції повинні використовуватися тільки в даному модулі то їх імена повинні містити на початку символ підкреслення (наприклад _helper()), що дозволяє «приховати» це імя. Якщо з іншого модуля буде здійснюватися імпорт (from module import *), це імя імпортуватися не буде. Також можна описати доступні ззовні імена модуля за допомогою спеціальної вбудованої змінної. (наприклад__all__ = ['edit_distance', 'jaccard_distance'])
