Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2011-kl-lab9.doc
Скачиваний:
16
Добавлен:
12.11.2019
Размер:
1.65 Mб
Скачать

2. Розробка програми

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

2.1 Структура модуля в Python

Мета розробки модулів програми - виділити логічно пов’язані визначення і функції для спрощення їх повторного використання та розуміння. Модуль в Python не що інше, як окремий *.py файл. Наприклад, для роботи з форматом певного корпусу, функції читання та запису цього формату повинні бути зібрані разом. Константи, які використовуються (розділювачі полів, чи розширення імен файлів EXTN = ".inf") повинні бути спільні. Якщо формат буде змінено, то ці зміни потрібно буде внести тільки в один файл. Аналогічно, модуль може містити текст програми для створення і маніпулювання певними структурами даних, наприклад синтаксичними деревами, або текст програми для виконання певної задачі, наприклад друк статистичних даних корпусу.

Перед створенням модулів Python корисно розглянути приклади. Можна знайти скомпільовані модулі NLTK на жорсткому диску використовуючи змінну __file__ , наприклад.:

 

>>> nltk.metrics.distance.__file__

'/usr/lib/python2.5/site-packages/nltk/metrics/distance.pyc'

Отриманий результат це місцезнаходження скомпільованого (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'])

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]