Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KL-LAB8(9).doc
Скачиваний:
18
Добавлен:
12.02.2016
Размер:
2 Мб
Скачать

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'])

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