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

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

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

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

Поскольку словари и списки могут создаваться во время выполнения, они иногда способны обеспечить более высокуюгибкость, чем жестко заданная логика инструкции if:>>> choice = ‘ham’>>> print {‘spam’: 1.25, # Инструкция ‘switch’ на базе словаря...‘ham’: 1.99, # Используйте has_key или get для...‘eggs’: 0.99, # значения по умолчанию...‘bacon’: 1.10}[choice]1.99Тем, кто такой прием видит впервые, может потребоваться некоторое время,чтобы осознать его; и тем не менее данный словарь обеспечивает множественное ветвление через индексирование по ключу choice для выбора одного из нескольких значений, почти так же, как это делает инструкция switch в языке C.Эквивалентная, но менее компактная инструкция if в языке Python выглядит,как показано ниже:>>> if choice == ‘spam’:...print 1.25...

elif choice == ‘ham’:...print 1.99... elif choice == ‘eggs’:...print 0.99... elif choice == ‘bacon’:...print 1.10... else:...print ‘Bad choice’...1.99Обратите внимание на часть else, которая предназначена для обработки ситуации, когда не найдено ни одного совпадения. Как было показано в главе 8, значение по умолчанию при использовании словарей может быть получено с помощью оператора in, метода get или при перехвате исключения. Те же самыеприемы могут использоваться и здесь – для определения действия по умолчанию в случае реализации множественного ветвления на базе словаря.

Нижеприводится пример с использование метода get для получения значения поумолчанию:>>> branch = {‘spam’: 1.25,...‘ham’: 1.99,Синтаксические правила языка Python...379‘eggs’: 0.99}>>> print branch.get(‘spam’, ‘Bad choice’)1.25>>> print branch.get(‘bacon’, ‘Bad choice’)Bad choiceПрименение оператора in проверки на вхождение в инструкции if может обеспечить получение того же результата по умолчанию:>>>>>>............Badchoice = ‘bacon’if choice in branch:print(branch[choice])else:print(‘Bad choice’)choiceСловари хорошо подходят для выбора значений, ассоциированных с ключами,но как быть в случае более сложных действий, которые можно запрограммировать в инструкциях if? В четвертой части книги вы узнаете, что словари такжемогут содержать функции, выполняющие сложные действия при ветвлении,реализуя обычные таблицы переходов.

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

Обычнопри колебаниях при выборе того или иного подхода предпочтение следует отдавать более простому и более удобочитаемому способу.Синтаксические правила языка PythonПервое знакомство с синтаксической моделью языка Python состоялось в главе 10. Теперь, когда мы подошли к таким крупным инструкциям, как if, настало время пересмотреть и дополнить сведения о синтаксисе, введенные ранее.Вообще язык программирования Python обладает простым синтаксисом, основанным на применении инструкций. Однако он обладает некоторыми особенностями, о которых вам необходимо знать:•• Инструкции выполняются последовательно, одна за другой, пока не будетпредусмотрено что-то другое.

Обычно интерпретатор выполняет инструкции в файле или в блоке от начала до конца, но такие инструкции, как if (и,как будет показано далее, циклы), заставляют интерпретатор выполнять переходы внутри программного кода. Так как путь интерпретатора Python через текст программы называется потоком управления, такие инструкции,как if, часто называются инструкциями управления потоком выполнения.•• Границы блоков и инструкций определяются автоматически. Как мы ужевидели, в языке Python отсутствуют фигурные скобки или разделители«begin/end», окружающие блоки программного кода.

Вместо этого принадлежность инструкций к вложенному блоку определяется по величине отступов. Точно так же инструкции в языке Python обычно не завершаются380Глава 12. Условная инструкция if и синтаксические правилаточкой с запятой; обычно признаком конца инструкции служит конец строки с этой инструкцией.•• Составные инструкции = “заголовок + «:» + инструкции с отступами”.Все составные инструкции в языке Python оформляются одинаково: строка с заголовком завершается двоеточием, далее следуют одна или болеевложенных инструкций, обычно с отступом относительно заголовка.

Этиинструкции с отступами называются блоком (или иногда набором). В инструкции if предложения elif и else являются не только частями инструкции if, но и заголовками с собственными вложенными блоками.•• Пустые строки, пробелы и комментарии обычно игнорируются. Пустыестроки игнорируются в файлах (но не в интерактивной оболочке, когдаони завершают составные инструкции). Пробелы внутри инструкций и выражений игнорируются практически всегда (за исключением строковыхлитералов, а также когда они используются для оформления отступов).Комментарии игнорируются всегда: они начинаются с символа # (не внутристроковых литералов) и простираются до конца строки.•• Строки документирования игнорируются, но сохраняются и отображаются специализированными инструментами.

В языке Python поддерживается дополнительная форма комментариев, которая называется строкамидокументирования, которые, в отличие от комментариев, начинающихсяс #, сохраняются и доступны для просмотра во время выполнения. Строкидокументирования – это обычные строки, которые располагаются в началефайлов с программами и в некоторых инструкциях. Интерпретатор игнорирует их содержимое, но они автоматически присоединяются к объектамво время выполнения и могут отображаться инструментами доступа к документации. Строки документирования являются частью стратегии документирования в языке Python и будут рассматриваться в последней главеэтой части книги.Как уже говорилось ранее, в языке Python отсутствует необходимость объявлять типы переменных – только один этот факт упрощает синтаксис языка больше, чем любые другие особенности. Но для большинства новых пользователей самой необычной особенностью синтаксиса языка Python кажетсяотсутствие фигурных скобок и точек с запятой, используемых в качестве разделителей блоков и инструкций во многих других языках, поэтому давайтерассмотрим их поближе.Разделители блоков: правила оформления отступовИнтерпретатор автоматически определяет границы блоков по величине отступов – то есть по ширине пустого пространства слева от программного кода.Все инструкции, смещенные вправо на одинаковое расстояние, принадлежатк одному и тому же блоку кода.

Другими словами, инструкции в блоке выстроены по вертикальной линии. Блок заканчивается либо с концом файла, либокак только встретится строка с меньшим отступом; более глубоко вложенныеблоки имеют более широкие отступы, чем инструкции в объемлющем блоке.Например, на рис. 12.1 показана структура блоков следующего фрагмента программного кода:x = 1if x:381Синтаксические правила языка Pythony = 2if y:print ‘block2’print ‘block1’print ‘block0’Блок 0Заголовок:Блок 1Заголовок:Блок 2Блок 1Блок 0Рис. 12.1.

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

Вложенные блоки могут начинаться с любой позиции –отступ может состоять из любого числа пробелов и символов табуляции, главное, чтобы все инструкции в одном блоке имели одинаковые отступы. То естьдля интерпретатора не важно, как будут оформляться отступы, главное, чтобыоформление было непротиворечивым. Наиболее часто для смещения на одинуровень используются четыре пробела или один символ табуляции, но в этомотношении не существует никаких стандартов.Правила оформления отступов в программном коде являются вполне естественными. Например, в следующем фрагменте демонстрируются типичныеошибки, связанные с оформлением отступов:x = ‘SPAM’# Ошибка: отступ в первой строкеif ‘rubbery’ in ‘shrubbery’:print(x * 8)x += ‘NI’# Ошибка: неуместный отступif x.endswith(‘NI’):x *= 2print(x)# Ошибка: непоследовательное оформление отступовПравильно оформленная версия этого фрагмента приводится ниже – даже в таком простом примере, как этот, правильное оформление отступов делает программный код намного более удобочитаемым:382Глава 12.

Условная инструкция if и синтаксические правилаx = ‘SPAM’if ‘rubbery’ in ‘shrubbery’:print(x * 8)x += ‘NI’if x.endswith(‘NI’):x *= 2print(x)# Выведет “SPAMNISPAMNI”Единственное, где в языке Python пробелы имеют большое значение, – это когда они находятся левее программного кода; в большей части других случаевневажно, есть пробелы или нет.

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

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

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

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

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