KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Роман Сузи - Язык программирования Python

Роман Сузи - Язык программирования Python

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Роман Сузи, "Язык программирования Python" бесплатно, без регистрации.
Перейти на страницу:

print lst

lst[0][1] = 1

print lst

Теперь результат тот, который ожидался:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

[[0, 1, 0], [0, 0, 0], [0, 0, 0]]

В модуле copy есть еще и функция deepcopy() для глубокого копирования, при которой объекты копируются на всю возможную глубину, рекурсивно.

Модули math и cmath

В этих модулях собраны математические функции для действительных и комплексных аргументов. Это те же функции, что используются в языке C. В таблице ниже даны функции модуля math. Там, где аргумент обозначен буквой z, аналогичная функция определена и в модуле cmath.

Функция или константа Описание acos(z) арккосинус z asin(z) арксинус z atan(z) арктангенс z atan2(y,x) atan(y/x) ceil(x) наименьшее целое, большее или равное x cos(z) косинус z cosh(x) гиперболический косинус x e константа e exp(z) экспонента (то есть, e**z) fabs(x) абсолютное значение x floor(x) наибольшее целое, меньшее или равное x fmod(x,y) остаток от деления x на y frexp(x) возвращает мантиссу и порядок x как пару (m, i), где m — число с плавающей точкой, а i — целое, такое, что x = m * 2.**i. Если 0, возвращает (0,0), иначе 0.5 <= abs(m) < 1.0 hypot(x,y) sqrt(x*x + y*y) ldexp(m,i) m * (2**i) log(z) натуральный логарифм z log10(z) десятичный логарифм z modf(x) возвращает пару (y,q) — целую и дробную часть x. Обе части имеют знак исходного числа pi константа π pow(x,y) x**y sin(z) синус z sinh(z) гиперболический синус z sqrt(z) корень квадратный от z tan(z) тангенс z tanh(z) гиперболический тангенс z Модуль random

Этот модуль генерирует псевдослучайные числа для нескольких различных распределений. Наиболее используемые функции:

random() Генерирует псевдослучайное число из полуоткрытого диапазона [0.0, 1.0). choice(s) Выбирает случайный элемент из последовательности s. shuffle(s) Размешивает элементы изменчивой последовательности s на месте. randrange([start,] stop[, step]) Выдает случайное целое число из диапазона range(start, stop, step). Аналогично choice(range(start, stop, step)). normalvariate(mu, sigma) Выдает число из последовательности нормально распределенных псевдослучайных чисел. Здесь mu — среднее, sigma — среднеквадратическое отклонение (sigma > 0)

Остальные функции и их параметры можно уточнить по документации. Следует отметить, что в модуле есть функция seed(n), которая позволяет установить генератор случайных чисел в некоторое состояние. Например, если возникнет необходимость многократного использования одной и той же последовательности псевдослучайных чисел.

Модуль time

Этот модуль дает функции для получения текущего времени и преобразования форматов времени.

Модуль sets

Модуль реализует тип данных для множеств. Следующий пример показывает, как использовать этот модуль. Следует заметить, что в Python 2.4 и старше тип set стал встроенным, и вместо sets.Set можно использовать set:

import sets

A = sets.Set([1, 2, 3])

B = sets.Set([2, 3, 4])

print A | B, A & B, A — B, A ^ B

for i in A:

 if i in B:

  print i,

В результате будет выведено:

Set([1, 2, 3, 4]) Set([2, 3]) Set([1]) Set([1, 4])

2 3

Модули array и struct

Эти модули реализуют низкоуровневый массив и структуру данных. Основное их назначение — разбор двоичных форматов данных.

Модуль itertools

Этот модуль содержит набор функций для работы с итераторами. Итераторы позволяют работать с данными последовательно, как если бы они получались в цикле. Альтернативный подход — использование списков для хранения промежуточных результатов — требует подчас большого количества памяти, тогда как использование итераторов позволяет получать значения на момент, когда они действительно требуются для дальнейших вычислений. Итераторы будут рассмотрены более подробно в лекции по функциональному программированию.

Модуль 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)

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*