Язык программирования Python - [10]

Шрифт
Интервал

) объектов модуля связываются с текущей областью видимости. При импорте можно изменить имя, с которым объект будет связан, с помощью >as. В первом случае пространство имен модуля остается в отдельном имени и для доступа к конкретному имени из модуля нужно применять точку. Во втором случае имена используются так, как если бы они были определены в текущем модуле:

>os.system("dir")

>digits = re.compile("\d+")

>print argv[0], environ

Повторный импорт модуля происходит гораздо быстрее, так как модули кэшируются интерпретатором. Загруженный модуль можно загрузить еще раз (например, если модуль изменился на диске) с помощью функции >reload():

>import mymodule

>...

>reload(mymodule)

Однако в этом случае все объекты, являющиеся экземплярами классов из старого варианта модуля, не изменят своего поведения.

При работе с модулями есть и другие тонкости. Например, сам процесс импорта модуля можно переопределить. Подробнее об этом можно узнать в оригинальной документации.

Встроенные функции

В среде Python без дополнительных операций импорта доступно более сотни встроенных объектов, в основном, функций и исключений. Для удобства функции условно разделены по категориям:

1. Функции преобразования типов и классы: >coerce, >str, >repr, >int, >list, >tuple, >long, >float, >complex, >dict, >super, >file, >bool, >object

2. Числовые и строковые функции: >abs, >divmod, >ord, >pow, >len, >chr, >unichr, >hex, >oct, >cmp, >round, >unicode

3. Функции обработки данных: >apply, >map, >filter, >reduce, >zip, >range, >xrange, >max, >min, >iter, >enumerate, >sum

4. Функции определения свойств: >hash, >id, >callable, >issubclass, >isinstance, >type

5. Функции для доступа к внутренним структурам: >locals, >globals, >vars, >intern, >dir

6. Функции компиляции и исполнения: >eval, >execfile, >reload, >__import__, >compile

7. Функции ввода–вывода: >input, >raw_input, >open

8. Функции для работы с атрибутами: >getattr, >setattr, >delattr, >hasattr

9. Функции-«украшатели» методов классов: >staticmethod, >classmethod, >property

10. Прочие функции: >buffer, >slice

Совет:

Уточнить назначение функции, ее аргументов и результата можно в интерактивной сессии интерпретатора Python:

>>>> help(len)

>Help on built–in function len:

>len(...)

>len(object) -> integer

>Return the number of items of a sequence or mapping.

Или так:

>>>> print len.__doc__

>len(object) -> integer

>Return the number of items of a sequence or mapping.

Функции преобразования типов и классы

Функции и классы из этой категории служат для преобразования типов данных. В старых версиях Python для преобразования к нужному типу использовалась одноименная функция. В новых версиях Python роль таких функций играют имена встроенных классов (однако семантика не изменилась). Для понимания сути достаточно небольшого примера:

>>>> int(23.5)

>23

>>>> float('12.345')

>12.345000000000001

>>>> dict([('a', 2), ('b', 3)])

>{'a': 2, 'b': 3}

>>>> object

>

>>>> class MyObject(object):

>... pass

>...

Числовые и строковые функции

Функции работают с числовыми или строковыми аргументами. В следующей таблице даны описания этих функций.

>abs(x)Модуль числа >x. Результат: >|x|.
>divmod(x, y)Частное и остаток от деления. Результат: (частное, остаток).
>pow(x, y[, m])Возведение >x в степень >y по модулю >m. Результат: >x**y % m.
>round(n[, z])Округление чисел до заданного знака после (или до) точки.
>ord(s)Функция возвращает код (или Unicode) заданного ей символа в односимвольной строке.
>chr(n)Возвращает строку с символом с заданным кодом.
>len(s)Возвращает число элементов последовательности или отображения.
>oct(n), >hex(n)Функции возвращают строку с восьмеричным или шестнадцатеричным представлением целого числа >n.
>cmp(x, y)Сравнение двух значений. Результат: отрицательный, ноль или положительный, в зависимости от результата сравнения.
>unichr(n)Возвращает односимвольную Unicode–строку с символом с кодом n.
>unicode(s, [, encoding[, errors]])Создает Unicode–объект, соответствующий строке >s в заданной кодировке encoding. Ошибки кодирования обрабатываются в соответствии с >errors, который может принимать значения: >'strict' (строгое преобразование), >'replace' (с заменой несуществующих символов) или >'ignore' (игнорировать несуществующие символы). По умолчанию: >encoding='utf–8', errors='strict'.

Следующий пример строит таблицу кодировки кириллических букв в Unicode:

>print "Таблица Unicode (русские буквы)".center(18*4)

>i = 0

>for c in "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"\

>         "абвгдежзийклмнопрстуфхцчшщъыьэюя":

> u = unicode(c, 'koi8–r')

> print "%3i: %1s %s" % (ord(u), c, `u`),

> i += 1

>  if i % 4 == 0:

>   print

Функции обработки данных

Эти функции подробнее будут рассмотрены в лекции по функциональному программированию. Пример с функциями >range() и >enumerate():

>>>> for i, c in enumerate("ABC"):

>... print i, c

>...

>0 A

>1 B

>2 C

>>>> print range(4, 20, 2)

>[4, 6, 8, 10, 12, 14, 16, 18]

Функции определения свойств

Эти функции обеспечивают доступ к некоторым встроенным атрибутам объектов и другим свойствам. Следующий пример показывает некоторые из этих функций:

>>>> s = "abcde"

>>>> s1 = "abcde"

>>>> s2 = "ab" + "cde"

>>>> print "hash:", hash(s), hash(s1), hash(s2)

>hash: — 1332677140–1332677140–1332677140

>>>> print "id:", id(s), id(s1), id(s2)


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.