Главная » Просмотр файлов » Марк Лутц - Изучаем Python, Четвертое издание

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 39

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 39 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 392020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 39)

Введение в типы объектов языка Pythonнии к которому можно указать значение, возвращаемое по умолчанию); в ���Python 2.X имеется метод has_key (который недоступен в версии 3.0); инструкцияtry (с которой мы познакомимся в главе 10, позволяющая перехватывать и обрабатывать исключения) и выражение if/else (по сути тот же условный оператор if, сжатый до размеров одной строки), например:>>>>>>0>>>>>>0value = D.get(‘x’, 0)value# Попытка получить значение,# указав значение по умолчаниюvalue = D[‘x’] if ‘x’ in D else 0 # Выражение if/elsevalueНо подробнее об этом мы поговорим в одной из следующих глав. А сейчас рассмотрим кортежи.КортежиОбъект-кортеж (t���������������������������������������������������������uple����������������������������������������������������� – произносится как «тъюпл» или «тъюпел», в зависимости от того, у кого вы спрашиваете) в общих чертах напоминает список, который невозможно изменить – кортежи являются последовательностями, каксписки, но они являются неизменяемыми, как строки.

Синтаксически литералкортежа заключается в круглые, а не в квадратные скобки. Они также поддерживают включение объектов различных типов, вложение и операции, типичные для последовательностей:>>> T = (1, 2, 3, 4) # Кортеж из 4 элементов>>> len(T)# Длина4>> T + (5, 6)(1, 2, 3, 4, 5, 6)# Конкатенация>>> T[0]1# Извлечение элемента, среза и так далееВ Python 3.0 кортежи обладают двумя методами, которые также имеютсяу списков:>>> T.index(4)3>>> T.count(4)1# Методы кортежей: значение 4 находится в позиции 3# Значение 4 присутствует в единственном экземпляреОсновное отличие кортежей – это невозможность их изменения после создания.

То есть кортежи являются неизменяемыми последовательностями:>>> T[0] = 2# Кортежи являются неизменяемыми...текст сообщения об ошибке опущен...TypeError: ‘tuple’ object does not support item assignmentПодобно спискам и словарям кортежи способны хранить объекты разных типов и допускают возможность вложения, но в отличие от них, не могут изменять свои размеры, так как являются неизменяемыми объектами:>>> T = (‘spam’, 3.0, [11, 22, 33])>>> T[1]145Файлы3.0>>> T[2][1]22>>> T.append(4)AttributeError: ‘tuple’ object has no attribute ‘append’Для чего нужны кортежи?Зачем нужен тип, который напоминает список, но поддерживает меньшее число операций? Откровенно говоря, на практике кортежи используются не такчасто, как списки, и главное их достоинство – неизменяемость.

Если коллекция объектов передается между компонентами программы в виде списка, онможет быть изменен любым из компонентов. Если используются кортежи, такие изменения становятся невозможны. То есть кортежи обеспечивают своегорода ограничение целостности, что может оказаться полезным в крупных программах. Далее в книге мы еще вернемся к кортежам. А сейчас перейдем к последнему базовому типу данных – к файлам.ФайлыОбъекты-файлы – это основной интерфейс между программным кодом на языке Python и внешними файлами на компьютере. Файлы являются одним избазовых типов, но они представляют собой нечто необычное, поскольку дляфайлов отсутствует возможность создания объектов в виде литералов. Вместоэтого, чтобы создать объект файла, необходимо вызвать встроенную функциюopen, передав ей имя внешнего файла и строку режима доступа к файлу.

Например, чтобы создать файл для вывода данных, вместе с именем файла функции необходимо передать строку режима ‘w’:>>>>>>6>>>6>>>f = open(‘data.txt’, ‘w’) # Создается новый файл для выводаf.write(‘Hello\n’) # Запись строки байтов в файлf.write(‘world\n’) # В Python 3.0 возвращает количество записанных байтовf.close()# Закрывает файл и выталкивает выходные буферы на дискВ этом примере создается файл в текущем каталоге и в него записывается текст(имя файла может содержать полный путь к каталогу, если требуется получитьдоступ к файлу, находящемуся в другом месте).

Чтобы прочитать то, что былозаписано в файл, его нужно открыть в режиме ‘r’ (этот режим используется поумолчанию, если строка режима в вызове функции опущена). Затем прочитатьсодержимое файла в строку и отобразить ее. Содержимое файла для сценариявсегда является строкой независимо от типов данных, фактически хранящихся в файле:>>> f = open(‘data.txt’) # ‘r’ – это режим доступа к файлу по умолчанию>>> text = f.read()# Файл читается целиком в строку>>> text‘Hello\nworld\n’>>> print(text)Helloworld# Вывод, с попутной интерпретацией служебных символов146Глава 4.

Введение в типы объектов языка Python>>> text.split()[‘Hello’, ‘world’]# Содержимое файла всегда является строкойОбъекты-файлы имеют и другие методы, обеспечивающие поддержку дополнительных возможностей, но пока мы не будем рассматривать их. Например,объекты файлов предоставляют различные способы чтения и записи данных(метод read принимает необязательный параметр – количество байтов, методreadline считывает по одной строке за одно обращение и так далее) и другиеметоды (seek – перемещает позицию чтения/записи в файле).

Однако, как будетпоказано позднее, самый лучший на сегодняшний день способ чтения файловсостоит в том, чтобы не читать его содержимое целиком – файлы предоставляют итераторы, которые обеспечивают автоматическое построчное чтениесодержимого файла в циклах for и в других контекстах.Мы будем рассматривать все множество методов позднее в этой книге, но еслиу вас появится желание быстро ознакомиться с ними, запустите функцию dir,передав ей слово file (имя типа данных), а затем функцию help с любым изимен методов в качестве аргумента:>>> dir(f)[ ...множество имен опущено...‘buffer’, ‘close’, ‘closed’, ‘encoding’, ‘errors’, ‘fileno’, ‘flush’, ‘isatty’,‘line_buffering’, ‘mode’, ‘name’, ‘newlines’, ‘read’, ‘readable’, ‘readline’,‘readlines’, ‘seek’, ‘seekable’, ‘tell’, ‘truncate’, ‘writable’, ‘write’,‘writelines’]>>> help(f.seek)...попробуйте и увидите...Позднее в этой книге вы узнаете также, что при работе с файлами в Python 3.0проводится очень четкая грань между текстовыми и двоичными данными.

Содержимое текстовых файлов представляется в виде строк и для них автоматически выполняется кодирование и декодирование символов Юникода. Содержимое двоичных файлов представляется в виде строк специального типаbytes, при этом никаких автоматических преобразований содержимого файловне производится:>>> data = open(‘data.bin’, ‘rb’).read()# Файл открывается в двоичном режиме>>> data# Строка байтов хранит двоичные данныеb’\x00\x00\x00\x07spam\x00\x08’>>> data[4:8]b’spam’Хотя при работе исключительно с текстовыми данными в формате �����������ASCII������о таких различиях обычно беспокоиться не приходится, однако в ����������������Python���������� 3.0 строки и файлы требуют особого внимания – при работе с интернационализированными приложениями или двоичными данными.Другие средства, напоминающие файлыФункция open – это рабочая лошадка в большинстве операций с файлами, которые можно выполнять в языке Python.

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

Например, множества, совсем недавно появившиесяв языке, – которые не являются ни последовательностями, ни отображениями. Множества – это неупорядоченные коллекции уникальных и неизменяемых объектов. Множества создаются встроенной функцией set или с помощьюновых синтаксических конструкций определения литералов и генераторовмножеств, появившихся в версии 3.0, и поддерживают типичные математические операции над множествами (выбор синтаксической конструкции {...} дляопределения литералов множеств в версии 3.0 не случаен, поскольку множества напоминают словари, в которых ключи не имеют значений):>>> X = set(‘spam’) # В 2.6 и 3.0 можно создавать из последовательностей>>> Y = {‘h’, ‘a’, ‘m’} # В 3.0 можно определять литералы множеств>>> X, Y({‘a’, ‘p’, ‘s’, ‘m’}, {‘a’, ‘h’, ‘m’})>>> X & Y{‘a’, ‘m’}# Пересечение>>> X | Y{‘a’, ‘p’, ‘s’, ‘h’, ‘m’}# Объединение>>> X – Y{‘p’, ‘s’}# Разность>>> {x ** 2 for x in [1, 2, 3, 4]} # Генератор множеств в 3.0{16, 1, 4, 9}Кроме того, недавно в Python появились вещественные числа с фиксированной точностью и рациональные числа (числа, представленные дробью, то естьпарой целых чисел – числителем и знаменателем).

Обе разновидности могутиспользоваться для решения проблем, связанных с точностью представленияпростых вещественных чисел:>>> 1 / 3# Вещественное число (в 2.6 числа должны заканчиваться .0)0.33333333333333331>>> (2/3) + (1/2)1.1666666666666665>>> import decimal# Вещественные числа с фиксированной точностью>>> d = decimal.Decimal(‘3.141’)>>> d + 1Decimal(‘4.141’)>>> decimal.getcontext().prec = 2>>> decimal.Decimal(‘1.00’) / decimal.Decimal(‘3.00’)Decimal(‘0.33’)148Глава 4. Введение в типы объектов языка Python>>> from fractions import Fraction # Рациональные числа: числитель+знаменатель>>> f = Fraction(2, 3)>>> f + 1Fraction(5, 3)>>> f + Fraction(1, 2)Fraction(7, 6)Кроме того в языке Python имеется логический тип данных (представленныйпредопределенными объектами True и False, которые по сути являются обычными целыми числами 1 и 0 с некоторыми особенностями отображения наэкране), а кроме того, давно уже существует специальный объект None, обычноиспользуемый для инициализации переменных и объектов:>>> 1 > 2, 1 < 2(False, True)>>> bool(‘spam’)True# Логические значения>>> X = None>>> print(X)None# Специальный объект None>>> L = [None] * 100# Инициализация списка сотней объектов None>>> L[None, None, None, None, None, None, None, None, None, None, None, None,None, None, None, None, None, None, None, ...список из 100 объектов None...]Как можно нарушить гибкость программного кодаМы еще будем много говорить обо всех этих типах данных далее в книге, но сначала я хочу сделать важное замечание.

Тип объекта, возвращаемый встроеннойфункцией type, в свою очередь сам является объектом. В Python 3.0 этот объектнесколько отличается от того, что возвращается в версии 2.6, потому что всетипы были объединены с классами (о которых мы будем говорить при изученииклассов «нового стиля» в шестой части книги). Допустим, что переменная L попрежнему представляет список, созданный в предыдущем разделе:# В Python 2.6:>>> type(L)# Типы: переменная L представляет объект типа list<type ‘list’>>>> type(type(L)) # Даже сами типы являются объектами<type ‘type’># В Python 3.0:>>> type(L)# 3.0: типы являются классами, и наоборот<class ‘list’>>>> type(type(L)) # Подробнее о классах типов рассказывается в главе 31<class ‘type’>Типы объектов можно исследовать не только в интерактивной оболочке, но и впрограммном коде, который использует эти объекты.

Характеристики

Тип файла
PDF-файл
Размер
12,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее