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

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

>id: 1076618592 1076618592 1076618656

Здесь, можно увидеть, что для одного и того же строкового литерала >"abcde" получается один и тот же объект, тогда как для одинаковых по значению объектов вполне можно получить разные объекты.

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

В современной реализации языка Python глобальные и локальные переменные доступны в виде словаря благодаря функциям >globals() и >locals(). Правда, записывать что–либо в эти словари не рекомендуется.

Функция >vars() возвращает таблицу локальных имен некоторого объекта (если параметр не задан, она возвращает то же, что и >locals()). Обычно используется в качестве словаря для операции форматирования:

>a = 1

>b = 2

>c = 3

>print "%(a)s + %(b)s = %(c)s" % vars()

Функции компиляции и исполнения

Функция >reload() уже рассматривалась, а из остальных функций этой категории особого внимания заслуживает >eval(). Как следует из названия, эта функция вычисляет переданное ей выражение. В примере ниже вычисляется выражение, которое строится динамически:

>a = 2

>b = 3

>for op in "+-*/%":

> e = "a " + op + " b"

> print e, "->", eval(e)

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

>for op in "+-*/%":

> e = "a " + op + " b"

> print e, "->", eval(e, {'a': 2, 'b': 3})

Функцией >eval() легко злоупотребить. Нужно стараться использовать ее только тогда, когда без нее не обойтись. Из соображений безопасности не следует применять >eval() для аргумента, в котором присутствует непроверенный ввод от пользователя.

Функции ввода–вывода

Функции >input() и >raw_input() используются для ввода со стандартного ввода. В серьезных программах их лучше не применять. Функция >open() служит для открытия файла по имени для чтения, записи или изменения. В следующем примере файл открывается для чтения:

>f = open("file.txt", "r", 1)

>for line in f:

> ...

>f.close()

Функция принимает три аргумента: имя файла (путь к файлу), режим открытия («>r» — чтение, «>w» — запись, «>a» — добавление или «>w+», «>a+», «>r+» — изменение. Также может прибавляться «>t», что обозначает текстовый файл. Это имеет значение только на платформе Windows). Третий аргумент указывает режим буферизации: 0 — без буферизации, 1 — построчная буферизация, больше 1 — буфер указанного размера в байтах.

В новых версиях Python функция >open() является синонимом для >file().

Функции для работы с атрибутами

У объектов в языке Python могут быть атрибуты (в терминологии языка C++ - члены–данные и члены–функции). Следующие две программы эквивалентны:

># первая программа:

>class A:

> pass

>a = A()

>a.attr = 1

>try:

> print a.attr

>except:

> print None

>del a.attr


># вторая программа:

>class A:

> pass

>a = A()

>setattr(a, 'attr', 1)

>if hasattr(a, 'attr'):

> print getattr(a, 'attr')

>else:

> print None

>delattr(a, 'attr')

Функции — «украшатели» методов классов

Эти функции будут рассмотрены в лекции, посвященной ООП.

Обзор стандартной библиотеки

Модули стандартной библиотеки можно условно разбить на группы по тематике.

1. Сервисы периода выполнения. Модули: >sys, >atexit, >copy, >traceback, >math, >cmath, >random, >time, >calendar, >datetime, >sets, >array, >struct, >itertools, >locale, >gettext.

2. Поддержка цикла разработки. Модули: >pdb, >hotshot, >profile, >unittest, >pydoc. Пакеты >docutils, >distutils.

3. Взаимодействие с ОС (файлы, процессы). Модули: >os, >os.path, >getopt, >glob, >popen2, >shutil, >select, >signal, >stat, >tempfile.

3. Обработка текстов. Модули: >string, >re, >StringIO, >codecs, >difflib, >mmap, >sgmllib, >htmllib, >htmlentitydefs. Пакет >xml.

3. Многопоточные вычисления. Модули: >threading, >thread, >Queue.

4. Хранение данных. Архивация. Модули: >pickle, >shelve, >anydbm, >gdbm, >gzip, >zlib, >zipfile, >bz2, >csv, >tarfile.

5. Платформо–зависимые модули. Для UNIX: >commands, >pwd, >grp, >fcntl, >resource, >termios, >readline, >rlcompleter. Для Windows: >msvcrt, >_winreg, >winsound.

6. Поддержка сети. Протоколы Интернет. Модули: >cgi, >Cookie, >urllib, >urlparse, >httplib, >smtplib, >poplib, >telnetlib, >socket, >asyncore. Примеры серверов: >SocketServer, >BaseHTTPServer, >xmlrpclib, >asynchat.

7. Поддержка Internet. Форматы данных. Модули: >quopri, >uu, >base64, >binhex, >binascii, >rfc822, >mimetools, >MimeWriter, >multifile, >mailbox. Пакет >email.

8. Python о себе. Модули: >parser, >symbol, >token, >keyword, >inspect, >tokenize, >pyclbr, >py_compile, >compileall, >dis, >compiler.

9. Графический интерфейс. Модуль >Tkinter.

Примечание:

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

Сервисы периода выполнения

Модуль sys

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


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

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


Java 7

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


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


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

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


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.