×
Traktatov.net » Язык программирования Python » Читать онлайн
Страница 20 из 141 Настройки
Модуль locale

Модуль locale применяется для работы с культурной средой. В конкретной культурной среде могут использоваться свои правила для написания чисел, валют, времени и даты и т.п. Следующий пример выводит дату сначала в культурной среде «C», а затем на русском языке:

>import time, locale

>locale.setlocale(locale.LC_ALL, None)

>print time.strftime("%d %B %Y", time.localtime (time.time()))

>locale.setlocale(locale.LC_ALL, "ru_RU.KOI8–R")

>print time.strftime("%d %B %Y", time.localtime (time.time()))

В результате:

>18 November 2004

>18 Ноября 2004

Модуль gettext

При интернационализации программы важно не только предусмотреть возможность использования нескольких культурных сред, но и перевод сообщений и меню программы на соответствующий язык. Модуль >gettext позволяет упростить этот процесс достаточно стандартным способом. Основные сообщения программы пишутся на английском языке. А переводы строк, отмеченных в программе специальным образом, даются в виде отдельных файлов, по одному на каждый язык (или культурную среду). Уточнить нюансы использования >gettext можно по документации к Python.

Поддержка цикла разработки

Модули этого раздела помогают поддерживать документацию, производить регрессионное тестирование, отлаживать и профилировать программы на Python, а также обслуживают распространение готовых программ, создавая среду для конфигурирования и установки пакетов.

В качестве иллюстрации можно предположить, что создается модуль для вычисления простых чисел по алгоритму «решето Эратосфена». Модуль будет находиться в файле >Sieve.py и состоять из одной функции >primes(N), которая в результате своей работы дает все простые (не имеющие натуральных делителей кроме себя и единицы) числа от >2 до >N:

>import sets

>import math

>"""Модуль для вычисления простых чисел от 2 до N """

>def primes(N):

> """Возвращает все простые от 2 до N"""

> sieve = sets.Set(range(2, N))

> for i in range(2, math.sqrt(N)):

>  if i in sieve:

>   sieve -= sets.Set(range(2*i, N, i))

> return sieve

Модуль pdb

Модуль >pdb предоставляет функции отладчика с интерфейсом — командной строкой. Сессия отладки вышеприведенного модуля могла бы быть такой:

>>>> import pdb

>>>> pdb.runcall(Sieve.primes, 100)

>> /home/rnd/workup/intuit–python/examples/Sieve.py(15)primes()

>-> sieve = sets.Set(range(2, N))

>(Pdb) l

>10    import sets

>11    import math

>12    """Модуль для вычисления простых чисел от 2 до N """

>13    def primes(N):

>14     """Возвращает все простые от 2 до N"""

>15 ->  sieve = sets.Set(range(2, N))

>16     for i in range(2, int(math.sqrt(N))):

>17      if i in sieve:

>18       sieve -= sets.Set(range(2*i, N, i))

>19     return sieve

>20

>(Pdb) n

>> /home/rnd/workup/intuit–python/examples/Sieve.py(16)primes()

>-> for i in range(2, int(math.sqrt(N))):

>(Pdb) n

>> /home/rnd/workup/intuit–python/examples/Sieve.py(17)primes()

>-> if i in sieve:

>(Pdb) n

>> /home/rnd/workup/intuit–python/examples/Sieve.py(18)primes()

>-> sieve -= sets.Set(range(2*i, N, i))

>(Pdb) n

>> /home/rnd/workup/intuit–python/examples/Sieve.py(16)primes()

>-> for i in range(2, int(math.sqrt(N))):

>(Pdb) p sieve