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

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

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

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

Точно так же можно было бы инициализировать список нулями, новсе-таки предпочтительнее использовать None, если заранее не известно, какиеданные будет содержать этот список.Имейте в виду, что значение None не означает «неопределенный». То есть None –это не «ничто» (несмотря на свое имя!); это настоящий объект, занимающийопределенную область памяти, с зарезервированным именем. Другие примеры310Глава 9. Кортежи, файлы и все остальноеиспользования этого специального объекта вы найдете ниже в книге. Крометого, этот объект является значением, возвращаемым функциями по умолчанию, как будет показано в четвертой части.Тип boolЛогический тип bool в языке Python������������������������������������������������������������������������������������(представленный в главе 5) просто усиливает понятия «истина» и «ложь» в языке Python.

Как мы узнали в главе 5,предопределенные имена True и False являются всего лишь разновидностямицелых чисел 1 и 0, как если бы этим двум зарезервированным именам предварительно присваивались значения 1 и 0. Этот тип реализован так, что ондействительно является лишь незначительным расширением к понятиям «истина» и «ложь», уже описанным, и предназначенным для того, чтобы сделатьзначения истинности более явными:•• При явном использовании слов True и False в операциях проверки на истинность они интерпретируются как «истина» и «ложь», которые в действительности являются специализированными версиями целых чисел 1 и 0.•• Результаты операций проверок также выводятся как слова True и False, а некак значения 1 и 0.Вам не обязательно использовать только логические типы в логических инструкциях, таких как if, – любые объекты по своей природе могут быть истинными или ложными, и все логические концепции, упоминаемые в этой главе,работают, как описано, и с другими типами.

Кроме того, в языке Python����������������имеется встроенная функция bool, которая может использоваться для проверкилогического значения объекта (например, для проверки истинности объекта,чтобы убедиться, что объект не является пустым или не равен нулю):>>> bool(1)True>>> bool(‘spam’)True>>> bool({})FalseОднако на практике вам редко придется вручную пользоваться переменнымитипа bool, которые воспроизводятся логическими проверками, потому что логические результаты автоматически используются инструкциями if и другими средствами выбора. Мы займемся исследованием логического типа, когдабудем рассматривать логические инструкции в главе 12.Иерархии типов данных в языке PythonНа рис. 9.3 приводятся все встроенные типы объектов, доступные в языке Py���thon, и отображены взаимоотношения между ними.

Наиболее значимые изних мы уже рассмотрели; большая часть других видов объектов на рис. 9.3 соответствует элементам программ (таким как функции и модули) или отражаетвнутреннее устройство интерпретатора (такие как кадры стека и скомпилированный программный код).Главное, что следует учитывать, – в языке Python все элементы являются объектами и могут быть использованы в ваших программах. Например, можнопередать класс в функцию, присвоить его переменной, заполнить им списокили словарь и так далее.311Иерархии типов данных в языке PythonВнутренниеКоллекцииОтображенияПоследовательностиМножестваТипКодНеизменяемыеИзменяемыеСловарьФиксированноемножествоСтрокаСписокЮникод (2.6)Массивбайтов (3.0)Строкибайтов (3.0)КортежВызываемыеФункцииГенераторМножествоЦелoеДлинное целое(2.6)ЛогическоеКлассСвязанныйМетодНесвязанный (2.6)ДиагностикаПрочиеЧислаЦелыеКадрВещественноеКомплексноеРациональноеМодульЭкземплярФайлNoneC фиксированнойточностьюПредставление(3.0)Рис. 9.3.

Основные встроенные типы в языке Python, организованныепо категориям. Все в языке Python является объектом, даже сами типы –это объекты! Тип любого объекта – это объект типа «type»Объекты типовФактически даже сами типы в языке �����������������������������������Python�����������������������������являются разновидностью объектов: объекты типов являются объектами типа type (попробуйте быстро произнести эту фразу три раза!).

Говоря серьезно, вызов встроенной функцииtype(X) возвращает объект типа объекта X. Объекты типов могут использоваться для сравнения типов вручную в инструкции if. Однако по причинам,изложенным в главе 4, ручная проверка типа в языке ���������������������Python���������������обычно рассматривается как нечто неправильное, что существенно ограничивает гибкостьпрограммного кода.312Глава 9. Кортежи, файлы и все остальноеОдно замечание по поводу имен типов: в версии Python 2.2 у каждого базовоготипа появилось новое встроенное имя, добавленное для обеспечения поддержки настройки типов через объектно-ориентированный механизм наследованияклассов: dict, list, str, tuple, int, float, complex, bytes, type, set и другие (в версииPython 2.6, но не в 3.0, имя типа file является синонимом для open).

Эти именапредставляют не просто функции преобразования, а настоящие конструкторыобъектов, хотя при решении несложных задач вы можете рассматривать ихкак простые функции.Модуль types, входящий в состав стандартной библиотеки, также предоставляет дополнительные имена типов, не являющиеся встроенными (например,типы функций; в ���������������������������������������������������������Python��������������������������������������������������� 2.6, но не в 3.0, этот модуль также включает синонимы встроенных типов) и предоставляет возможность проверять тип объектас помощью функции isinstance. Например, все следующие операции проверкивозвращают истину:type([1]) == type([]) # Сравнивание с типом другого спискаtype([1]) == list# Сравнивание с именем типаisinstance([1], list) # Список или объект класса, производного от listimport types# В модуле types определены имена других типовdef f(): passtype(f) == types.FunctionTypeПоскольку в современных версиях Python от типов можно порождать дочерниеклассы, рекомендуется не пренебрегать функцией isinstance.

Подробнее о создании дочерних классов от встроенных типов в версии Python 2.2 (и выше) рассказывается в главе 31.Кроме того, в главе 31 мы исследуем, как функция type(X) и операции проверки типа применяются к экземплярам пользовательских классов. В двух словах: в ��������������������������������������������������������������������Python�������������������������������������������������������������� 3.0 и для классов «нового стиля» в ��������������������������Python�������������������� 2.6 типом экземпляра класса является сам класс, на основе которого был создан экземпляр.

Для«классических» классов в Python 2.6 (и в более ранних версиях) экземплярылюбых классов имеют тип «������������������������������������������������instance����������������������������������������», поэтому, чтобы получить более или менее осмысленные результаты, мы должны сравнивать атрибуты __class__ экземпляров. Так как мы пока не готовы обсуждать все, что касается классов,отложим дальнейшее обсуждение этой темы до главы 31.Другие типы в PythonПомимо базовых объектов, рассмотренных в этой части книги, и объектов,представляющих элементы программ, такие как функции, модули и классы, с которыми мы встретимся ниже, в составе Python����������������������������������������������обычно устанавливаются десятки других типов объектов, доступных в виде связанных расширений на языке C или в виде классов языка Python – объекты регулярныхвыражений, файлы DBM, компоненты графического интерфейса, сетевыесокеты и так далее.Главное отличие между этими и встроенными типами, которые мы до сих поррассматривали, состоит в том, что для встроенных типов языком предоставляется специальный синтаксис создания объектов этих типов (например, 4 – для313Ловушки встроенных типовцелого числа, [1,2] – для списка, функция open – для файла, а def и lambda – дляфункций).

Другие типы обычно доступны в модулях стандартной библиотеки,которые необходимо импортировать перед использованием. Например, чтобысоздать объект регулярного выражения, необходимо импортировать модуль reи вызвать функцию re.compile(). Полное руководство по всем типам, доступным в программах на языке Python, вы найдете в справочнике по библиотекеPython.Ловушки встроенных типовЭто окончание нашего обзора базовых типов данных. Мы завершаем эту частькниги обсуждением общих проблем, с которыми сталкиваются новые пользователи (а иногда и эксперты), и их решений. Отчасти – это краткий обзор идей,которые мы уже рассматривали, но они достаточно важны, чтобы вновь вернуться к ним.Операция присваивания создает ссылку, а не копиюПоскольку это центральное понятие, я напомню о нем еще раз: вы должныпонимать, что может происходить с разделяемыми ссылками в вашей программе.

Например, ниже создается объект списка, связанный с именем L, наэто имя также ссылается элемент списка M. Таким образом, изменение списка с помощью имени L приведет к изменению списка, на который ссылаетсяи список M:>>> L = [1, 2, 3]>>> M = [‘X’, L, ‘Y’]>>> M[‘X’, [1, 2, 3], ‘Y’]>>> L[1] = 0>>> M[‘X’, [1, 0, 3], ‘Y’]# Встраивает ссылку из L# Список M также изменяетсяОбычно этот эффект обретает важность только в больших программах, и какправило, совместное использование ссылок – это именно то, что необходимо.Если это является нежелательным, вы всегда можете явно создать копию объекта.

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

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

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

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