Учебник Python 3.1. Учебник Python 3. Учебник Python 1 Материал из Викиучебника. Оглавление
Скачать 1.85 Mb.
|
Учебник Python 3.1 Материал из Викиучебника Учебник Python 3.1: Материал из Викиучебника. Оглавление. Описание....................................................................................................................................5 Разжигая ваш аппетит....................................................................................................................5 Использование интерпретатора Python........................................................................................7 Запуск интерпретатора.............................................................................................................7 Передача параметров...........................................................................................................8 Интерактивный режим.........................................................................................................8 Интерпретатор и его окружение..............................................................................................9 Обработка ошибок................................................................................................................9 Исполняемые сценарии на Python......................................................................................9 Кодировка исходных файлов.............................................................................................10 Интерактивный файл запуска............................................................................................10 Неформальное введение в Python...............................................................................................11 Использование Python в качестве калькулятора...................................................................11 Числа....................................................................................................................................11 Строки.................................................................................................................................14 О Unicode.............................................................................................................................17 Списки.................................................................................................................................18 Первые шаги к программированию......................................................................................19 Больше средств для управления потоком команд[14]..............................................................20 Оператор if...............................................................................................................................20 Оператор for.............................................................................................................................21 Функция range().......................................................................................................................21 Операторы break и continue, а также условие else в циклах................................................22 Оператор pass...........................................................................................................................23 Определение функций............................................................................................................23 Подробнее об определении функций....................................................................................25 Значения аргументов по умолчанию................................................................................25 Именованные параметры [19]...........................................................................................26 Списки параметров произвольной длины........................................................................28 Распаковка списков параметров........................................................................................28 Модель lambda....................................................................................................................28 Строки документации........................................................................................................29 Интермеццо: Стиль написания кода......................................................................................29 Структуры данных.......................................................................................................................30 Подробнее о списках...............................................................................................................30 Использование списка в качестве стека...........................................................................31 Использование списка в качестве очереди.......................................................................32 Списковые сборки[33]........................................................................................................32 Вложенные списковые сборки..........................................................................................33 Оператор del.............................................................................................................................34 Кортежи и последовательности.............................................................................................34 Множества...............................................................................................................................35 Словари....................................................................................................................................36 Организация циклов................................................................................................................37 Подробнее об условиях..........................................................................................................38 Сравнение последовательностей и других типов................................................................39 2 Учебник Python 3.1: Материал из Викиучебника. Модули..........................................................................................................................................40 Подробнее о модулях..............................................................................................................41 Выполнение модулей в качестве сценариев.....................................................................41 Путь поиска модулей..........................................................................................................42 „Скомпилированные“ файлы Python................................................................................42 Стандартные модули...............................................................................................................43 Функция dir()...........................................................................................................................44 Пакеты......................................................................................................................................45 Импорт * из пакета.............................................................................................................46 Ссылки внутри пакета........................................................................................................47 Пакеты в нескольких каталогах........................................................................................48 Ввод и вывод................................................................................................................................48 Удобное форматирование вывода..........................................................................................48 Форматирование строк в старом стиле.............................................................................51 Запись и чтение файлов..........................................................................................................51 Методы объектов-файлов..................................................................................................51 Модуль pickle......................................................................................................................53 Ошибки и исключения................................................................................................................54 Синтаксические ошибки.........................................................................................................54 Исключения.............................................................................................................................55 Обработка исключений...........................................................................................................55 Порождение исключений.......................................................................................................57 Исключения, определённые пользователем.........................................................................58 Определение действий при подчистке..................................................................................59 Предопределённые действия по подчистке..........................................................................60 Классы...........................................................................................................................................60 Пара слов о терминологии.....................................................................................................61 Области видимости и пространства имён в Python.............................................................61 Пример по областям видимости и пространствам имён.....................................................63 Первый взгляд на классы........................................................................................................64 Синтаксис определения класса.........................................................................................64 Объекты-классы..................................................................................................................65 Объекты-экземпляры.........................................................................................................65 Объекты-методы.................................................................................................................66 Различные замечания..............................................................................................................67 Наследование...........................................................................................................................68 Множественное наследование..........................................................................................69 Приватные переменные..........................................................................................................70 Всякая всячина........................................................................................................................71 Исключения — тоже классы..................................................................................................71 Итераторы................................................................................................................................72 Генераторы...............................................................................................................................73 Выражения-генераторы..........................................................................................................74 Краткий обзор стандартной библиотеки...................................................................................74 Взаимодействие с операционной системой..........................................................................74 Wildcard-шаблоны для имён файлов.....................................................................................75 Аргументы командной строки...............................................................................................75 Стандартный вывод. Завершение сценария..........................................................................75 3 Учебник Python 3.1: Материал из Викиучебника. Сравнение строк по шаблонам...............................................................................................75 Математические функции......................................................................................................75 Протоколы интернет...............................................................................................................76 Дата и время.............................................................................................................................76 Сжатие данных и архивы........................................................................................................77 Измерение производительности............................................................................................77 Контроль качества...................................................................................................................77 «Батарейки в комплекте»........................................................................................................78 Второй краткий обзор стандартной библиотеки.......................................................................78 Форматирование вывода.........................................................................................................78 Работа с шаблонами................................................................................................................79 Работа с записями двоичных данных....................................................................................80 Многопоточность....................................................................................................................80 Запись в журнал......................................................................................................................81 Слабые ссылки........................................................................................................................82 Работа со списками.................................................................................................................82 Десятичная арифметика чисел с плавающей запятой.........................................................83 Что дальше?..................................................................................................................................84 4 Учебник Python 3.1: Материал из Викиучебника. Описание Python — мощный и простой для изучения язык программирования. В нём предоставлены проработанные высокоуровневые структуры данных и простой, но эффективный подход к объектно-ориентированному программированию. Сочетание изящного синтаксиса и динамической типизации, совмещённых с интерпретируемой сущностью, делает Python идеальным языком для написания сценариев и ускоренной разработки приложений в различных сферах и на большинстве платформ. Интерпретатор Python и разрастающаяся стандартная библиотека находятся в свободном доступе в виде исходников и бинарных файлов для всех основных платформ на официальном сайте Python http://www.python.org и могут распространяться без ограничений. Кроме этого на сайте содержатся дистрибутивы и ссылки на многочисленные модули третьих сторон для языка Python, различные программы и инструменты, а также дополнительная документация. Интерпретатор Python может быть легко расширен с помощью новых функций и типов данных, написанных на C/C++ (или других языков, к которым можно получить доступ из C). Также Python можно применять как язык расширений для настраиваемых приложений. Этот учебник неформально представляет читателю основные концепции и возможности языка и системы Python. Полезно держать интерпретатор Python под рукой для получения практического опыта, но при этом все примеры самодостаточны, так что учебник вполне возможно читать вне сети. Описание стандартных объектов и модулей вы можете найти в справочнике по библиотеке Python Руководство по языку даёт более формальное описание языка. Перед написанием расширений на C/C++ ознакомьтесь с руководством по расширению и встраиванию в интерпретатор и Python/C API справочником по . Существует также несколько книг, в которых подробно рассмотрен язык Python. Этот учебник не претендует на звание всеобъемлющего и не описывает каждую особенность Python: он даже не описывает всех его часто использующихся особенностей. Вместо этого он знакомит читателя с наиболее заслуживающими внимания из них и даёт вам представление о стиле и привкусе языка. После прочтения учебника вы сможете писать и читать программы и модули, написанные на Python, и будете готовы узнать больше о различных модулях библиотеки Python, описанных в справочнике по библиотеке Python Кроме того, будет нелишним полистать Глоссарий Разжигая ваш аппетит Если вы много работаете за компьютером — то периодически обнаруживаете задачи, которые хотели бы автоматизировать. Например, вы были бы не против ускорить операцию поиска и замены большого количества текстовых файлов, или как-то своеобразно переименовать и отсортировать набор фотографий. Возможно, вам хотелось бы написать небольшую базу данных на заказ, специализированное GUI-приложение или простую игру. Если вы профессиональный разработчик программных продуктов — вероятно, вы привыкли работать с несколькими библиотеками на C/C++/Java, но находите обычный цикл 5 Учебник Python 3.1: Материал из Викиучебника. написания/компиляции/тестирования/перекомпиляции кода чересчур медленным. Возможно, вы пишете набор тестов для такой библиотеки и процесс написания тестирующего кода воспринимается утомительным. Или же вы написали программу, которая должна использовать специальный язык для расширений и не хотите проектировать и разрабатывать полностью новый язык для вашего приложения. Python — язык, который вам подойдёт. Вы можете написать шелл-сценарий для Unix или использовать пакетные файлы Windows для некоторых из этих задач, но шелл-сценарии хороши лишь для перемещения файлов и замены текстовых данных — они вряд ли подойдут для написания приложений, снабженных графическим интерфейсом, или игр. Вы можете написать программу на C/C+ +/Java, но разработка может занять довольно много времени — даже на то, чтобы получить первый рабочий набросок, его требуется немало. Python — проще в использовании, доступен на операционных системах Windows, Mac OS X и Unix, и поможет сделать работу намного быстрее. Даже учитывая лёгкость использования, Python — полноценный язык программирования, предлагающий много больше возможностей для структурирования и поддержки крупных программ, чем могут позволить себе шелл-сценарии или пакетные файлы. С другой стороны, Python также предоставляет намного больше информации для отладки ошибок чем C и, будучи сверх-высокоуровневым-языком, имеет встроенные высокоуровневые типы данных — такие, как гибкие массивы и словари. Благодаря наличию обобщённых типов данных Python применим для более широкого круга приложений чем Awk или даже Perl, и при этом очень многие вещи остаются в языке Python как минимум настолько же простыми, насколько просты в этих языках. Python позволяет вам разделить вашу программу на модули, которые могут быть заново использованы в других программах на Python. Он поставляется вместе с внушительной коллекцией стандартных модулей, которые вы можете использовать в качестве фундамента ваших программ; или в качестве примеров для того, чтобы начать изучение Python. Многие из этих модулей предоставляют различную полезную функциональность: например, ввод-вывод для файлов, системные вызовы, сокеты, и даже инструменты для создания графического пользовательского интерфейса — такие, как Tk. Python — интерпретируемый язык, и это может сохранить вам немало времени при разработке — в компиляции и связывании нет необходимости. Интерпретатор может использоваться в интерактивном режиме, что позволяет легко экспериментировать с возможностями языка, писать программы-однодневки или проверять функции во время разработки программ методом снизу-вверх. И, кроме всего прочего — это удобный настольный калькулятор. Python даёт возможность писать компактные и читабельные программы. Программы, написанные на Python отличаются большей краткостью чем эквиваленты на C, C++ или Java, по нескольким причинам: • высокоуровневые типы данных позволяют вам выражать сложные операции в одной инструкции; • группировка инструкций выполняется отступами, а не операторными скобками; • нет необходимости в описании переменных или аргументов. 6 Учебник Python 3.1: Материал из Викиучебника. Python расширяем: если вы знаете, как программировать на C, то вам легко будет добавить к интерпретатору новую встроенную функцию или модуль, выполнить критические операции на максимальной скорости или связать программы на Python с библиотеками, которые могут быть доступны только в бинарной форме (например, зависящие от поставщика графические библиотеки). Если вы действительно увлечены — вы можете привязать интерпретатор Python к приложению, написанному на C — чтобы использовать его как язык расширений или командный язык этого приложения. Кстати, язык назван в честь шоу «Летающий цирк Монти Пайтона» на BBC и не имеет ничего общего с рептилиями. Ссылки на скетчи Монти Пайтона в документации не только позволены, но и поощряются! Теперь, когда ваш интерес к Python полностью пробужден, вам наверняка захочется изучить его более детально. В связи с тем, что лучший способ выучить язык — использовать его — автор приглашает вас использовать интерпретатор Python в процессе чтения. В следующей главе описана механика использования интерпретатора. Это довольно приземленная информация, но она необходима для работы с примерами, которые будут представлены позже. Остальная часть учебника описывает различные возможности языка и системы Python за счёт примеров — начиная с простых выражений, операторов и типов данных, рассматривая функции и модули, и заканчивая прикосновением к таким продвинутым концепциям как исключения и определённые пользователем [1] классы. Использование интерпретатора Python Запуск интерпретатора Интерпретатор Python после установки располагается, обычно, по пути /usr/local/bin/python3.1 — на тех компьютерах, где этот путь доступен. Добавление каталога/usr/local/bin к пути поиска Unix-шелла (переменная PATH) позволит запустить интерпретатор набором команды python3.1 прямо из шелла [2] . Поскольку выбор каталога, в котором будет обитать интерпретатор, осуществляется при его установке, то возможны и другие варианты — посоветуйтесь с вашим Python-гуру или системным администратором. (Например, путь /usr/local/python тоже популярен в качестве альтернативного расположения.) На машинах с ОС Windows, инсталляция Python обычно осуществляется в каталог C:\Python31, но и он может быть изменён во время установки. Чтобы добавить этот каталог к вашему пути поиска, вы можете набрать в окне DOS следующую команду, в ответ на приглашение: set path=%path%;C:\python31 При наборе символа конца файла (Ctrl-D в Unix, Ctrl-Z в Windows) в ответ на основное приглашение интерпретатора, последний будет вынужден закончить работу с нулевым статусом выхода. Если это не сработает — вы можете выйти из интерпретатора путём ввода следующих команд: 7 Учебник Python 3.1: Материал из Викиучебника. import sys ; sys .exit() Особенности редактирования строк в интерпретаторе не оказываются, обычно, чересчур сложными. Те, кто установил интерпретатор на машину Unix, потенциально имеют поддержку библиотеки GNU readline, обеспечивающей усовершенствованное интерактивное редактирование и сохранение истории. Самый быстрый, наверное, способ проверить, поддерживается ли расширенное редактирование командной строки, заключается в нажатии Ctrl-P в ответ на первое полученное приглашение Python. Если вы услышите сигнал — значит вам доступно редактирование командной строки — тогда обратитесь к Приложению об Интерактивном редактировании входных данных за описанием клавиш. Если на ваш взгляд ничего не произошло или отобразился символ ^P — редактирование командной строки недоступно — удалять символы из текущей строки возможно будет лишь использованием клавиши Backspace. Интерпретатор ведёт себя сходно шеллу Unix: если он вызван, когда стандартный ввод привязан к устройству tty — он считывает и выполняет команды в режиме диалога; будучи вызванным с именем файла в качестве параметра или с файлом, назначенным на стандартный ввод — он читает и выполняет сценарий из этого файла. Другой способ запустить интерпретатор — директива python -c команда [arg] ... — при её использовании поочередно выполняются инструкции(-ция) из команды (как при использовании опции -c Unix-шелла). В связи с тем, что инструкции Python часто содержат пробелы или другие специальные для шелла символы, рекомендуется заключать командыполностью в одинарные кавычки. Некоторые модули Python оказываются полезными при использовании их в качестве сценариев. Они могут быть запущены в этом виде командой python -m модуль [arg] ... — таким образом исполняется исходный файл модуля (как произошло бы, если бы вы ввели его полное имя в командной строке). Обратите внимание на различие между командами python file и python При использовании файла сценария иногда полезно иметь возможность запустить сценарий и затем войти в интерактивный режим. Это может быть сделано через указание параметра -iперед именем сценария. (Этот способ не сработает, если сценарий считывается со стандартного ввода — по той самой причине, которая описана в предыдущем абзаце). Передача параметров В случае, если интерпретатору известны имя сценария и дополнительные параметры, с которыми он вызван, все они передаются сценарию в переменной sys.argv , представляющей собой список ( list ) строк. Длина ( length ) списка — минимум, единица; если не переданы ни имя сценария, ни аргументы — то sys.argv[0] содержит пустую строку. Когда в качестве имени сценария передан '-' (означает стандартный ввод), sys.argv[0] устанавливается в '-' . Если используется директива - 8 Учебник Python 3.1: Материал из Викиучебника. c команда — sys.argv[0] содержит '-c' . В случае, если используется директива - m модуль — то sys.argv[0] устанавливается равным полному имени модуля по расположению. Опции, обнаруженные после сочетаний-c команда или -m модуль не обрабатываются интерпретатором Python, но остаются в переменной sys.argv , дабы обеспечить возможность отслеживания в самой команде или в модуле. Интерактивный режим Если команды считываются с tty — говорят, что интерпретатор находится в интерактивном режиме (режиме диалога). В этом режиме он приглашает к вводу следующей команды, отобразив основное приглашение [3] (обычно это три знака «больше- чем» — >>>); в то же время, для продолжающих строк [4] выводится вспомогательное приглашение [5] (по умолчанию — три точки — ...). Перед выводом первого приглашения интерпретатор отображает приветственное сообщение, содержащее номер его версии и пометку о правах копирования: $ python3.1 Python 3.1a1 (py3k , Sep 12 2007 , 12 : 21 : 02 ) [GCC 3.4.6 20060404 (Red Hat 3.4.6- 8 )] on linux2 Type "help" , "copyright" , "credits" or "license" for more information. >>> Продолжающие строки используются в случаях, когда необходимо ввести многострочную конструкцию. Взгляните, например, на следующий оператор if [6] : >>> the_world_is_flat = 1 >>> if the_world_is_flat: ( "Be careful not to fall off!" ) Be careful not to fall off ! Интерпретатор и его окружение Обработка ошибок В случае появления ошибки интерпретатор выводит сообщение об ошибке, завершая его стеком вызовов. В интерактивном режиме он снова возвращается в состояние приглашения для ввода команд; если ввод происходит из файла — интерпретатор выходит с ненулевым статусом, сразу после распечатки стека вызовов. (Исключения, обрабатываемые в блоке except оператора try в этом контексте не считаются ошибками.) Некоторые ошибки исключительно фатальны и вызывают собой принудительное завершение работы с ненулевым статусом — это применимо к внутренним противоречиям языка и к некоторым случаям нехватки памяти. Все сообщения об ошибках выводятся в стандартный поток ошибок (error stream). Обычный вывод исполняемых команд направляется в стандартный вывод. Нажатие клавиш прерывания процесса (обычно Ctrl-C или DEL), в ответ на приглашение в основном или вспомогательном режиме, отменяет ввод и возвращает вас к основному приглашению. [7] Символ прерывания, набранный во время выполнения какой-либо команды порождает исключение KeyboardInterrupt , которое, в свою очередь, может быть перехвачено оператором try Исполняемые сценарии на Python На Unix-системах семейства BSD сценарии на Python могут быть сделаны исполняемыми, также как и шелл-сценарии, путём добавления следующей строки 9 Учебник Python 3.1: Материал из Викиучебника. #! /usr/bin/env python3.1 (предполагается, что интерпретатор может быть найден по одному из путей, указанных в пользовательской переменной PATH) в начало сценария и установки файла в исполняемый режим. Символы #! должны быть первыми символами в файле. На некоторых платформах строка должна оканчиваться символом конца строки в стиле Unix ('\n'), а не в стиле Windows ('\r\n'). Заметьте, что символ решётки '#' используется в Python для указания начала комментария. Исполняемый режим (или разрешение на исполнение) может быть установлен сценарию использованием команды chmod: $ chmod +x myscript.py У систем с операционной системой Windows нет такого понятия, как исполняемый режим. Установщик Python автоматически связывает файлы .py с файлом python.exe, таким образом двойной клик на файле Python запустит его в виде сценария. Расширение может быть и .pyw в случае, если окно консоли (которое, обычно, отображается) при запуске сценария подавляется. Кодировка исходных файлов По умолчанию, исходники Python считаются созданными в кодировке UTF-8. В этой кодировке в строковых литералах, идентификаторах и комментариях могут быть использованы символы большинства языков мира — учитывая то, что стандартная библиотека Python использует символы ASCII для именования идентификаторов — и этому соглашению должен следовать любой переносимый код. Для корректного отображения всех этих символов, ваш редактор должен опознавать файл как закодированный в UTF-8 и должен использовать шрифт, который содержит все символы, используемые в файле. Также, есть возможность указать другую кодировку для исходных файлов. Для этого нужно добавить специальный комментарий следом за строкой #!, дабы описать кодировку исходного файла: # -*- coding: encoding -*- Если используется это описание — всё, что находится в этом файле будет опознаваться как имеющее соответствующую кодировку encoding, а не UTF-8. Список возможных кодировок представлен в Справочнике по библиотеке — в разделе, описывающем модуль codecs Например, если выбранный вами редактор не поддерживает файлы, закодированные UTF- 8 и требует применения какой-либо другой кодировки, допустим Windows-1252, вы можете написать: # -*- coding: cp-1252 -*- И, с этого момента, использовать в исходных файлах только символы из таблицы символов Windows-1252. Устанавливающий (отличную от установленной по умолчанию) кодировку специальный комментарий должен являться первой или второй строкой файла. Интерактивный файл запуска Если вы используете Python интерактивно — часто бывает удобным выполнить некоторые стандартные команды перед запуском интерпретатора. Вы можете сделать это, установив 10 Учебник Python 3.1: Материал из Викиучебника. переменную окружения с именем PYTHONSTARTUP равной имени файла, содержащего ваши команды запуска. Способ схож с использованием файла .profile в Unix-шелле. Этот файл читается только в интерактивных сессиях, но не в случае считывания команд из сценария, и не в случае, если /dev/tty назначен как независимый источник команд (который в других случаях ведет себя сходно интерактивным сессиям). Файл исполняется в том же пространстве имён, что и исполняемые команды - поэтому объекты и импортированные модули, которые он определяет могут свободно использоваться в интерактивной сессии. Также в этом файле вы можете изменить приглашения: sys.ps1 и sys.ps2 Если вы хотите прочитать дополнительный файл запуска из текущего каталога — вы можете использовать код вроде: if os .path.isfile( '.pythonrc.py' ): exec ( open ( '.pythonrc.py' ).read()) Если вы хотите использовать файл запуска в сценарии — вам нужно будет указать это явно: import os filename = os .environ.get( 'PYTHONSTARTUP' ) if filename and os .path.isfile(filename): exec ( open (filename).read()) Неформальное введение в Python В приведенных далее примерах, ввод и вывод различаются присутствием и отсутствием приглашений соответственно (приглашениями являются >>> и ...): чтобы воспроизвести пример — вам нужно ввести всё, что следует за приглашением, после его появления; строки, не начинающиеся с приглашений являются выводом интерпретатора. Обратите внимание, что строка, в которой содержится лишь вспомогательное приглашение ("... ") означает, что вам нужно ввести пустую строку — этот способ используется для завершения многострочных команд. Большинство примеров в этом руководстве — даже те, которые вводятся в интерактивном режиме — содержат комментарии. Комментарии в Python начинаются с символа решетки # (hash) — и продолжаются до физического конца строки. Комментарии могут находиться как в начале строки, так и следовать за пробельными символами или кодом — но не содержаться внутри строки. Символ решётки в строке остаётся лишь символом решётки. Поскольку комментарии предназначены для того, чтобы сделать код более понятным, и не интерпретируются Python - при вводе примеров они могут быть опущены. Несколько примеров: # это первый комментарий SPAM = 1 # а это второй комментарий # ... и наконец третий! STRING = "# Это не комментарий." Использование Python в качестве калькулятора Давайте опробуем несколько простых команд Python. Запустите интерпретатор и дождитесь появления основного приглашения — >>>. (Это не должно занять много времени.) 11 Учебник Python 3.1: Материал из Викиучебника. Числа Поведение интерпретатора сходно поведению калькулятора: вы вводите выражение, а в ответ он выводит значение. Синтаксис выражений привычен: операции + , - , * и / работают также как и в большинстве других языков (например, Паскале или C); для группировки можно использовать скобки. Например: >>> 2 + 2 4 >>> # Это комментарий 2 + 2 4 >>> 2 + 2 # а вот комментарий на одной строке с кодом 4 >>> ( 50 - 5 * 6 )/ 4 5.0 >>> 8 / 5 # При делении целых чисел дробные части не теряются 1.6000000000000001 Заметьте: Вы можете получить результат, несколько отличный от представленного: результаты деления с плавающей запятой могут различаться на разных системах. Позже мы расскажем о том, как контролировать вывод чисел с плавающей запятой. Здесь использован наиболее информативный вариант вывода этого значения, а не более легко- читаемый, какой возможен: >>> ( 8 / 5 ) 1.6 Чтобы учебник читался легче, мы будем показывать упрощённый вывод чисел с плавающей точкой и объясним позже, почему эти два способа отображения чисел с плавающей точкой стали различными. Обратитесь к приложению Арифметика с : плавающей точкой Проблемы и ограничения , чтобы ознакомится с подробным обсуждением. Для получения целого результата при делении целых чисел, отсекая дробные результаты, предназначена другая операция: //: >>> # Деление целых чисел возвращает округлённое к минимальному значение: 7 // 3 2 >>> 7 //- 3 - 3 Знак равенства ( '=' ) используется для присваивания переменной какого-либо значения. После этого действия в интерактивном режиме ничего не выводится: >>> width = 20 >>> height = 5 * 9 >>> width * height 900 Значение может быть присвоено нескольким переменным одновременно: >>> x = y = z = 0 # Нулевые x, y и z >>> x 0 >>> y 0 >>> z 0 12 Учебник Python 3.1: Материал из Викиучебника. Переменные должны быть определены (defined) (должны иметь присвоенное значение) перед использованием, иначе будет сгенерирована ошибка: >>> # попытка получить доступ к неопределённой переменной ... n Traceback (most recent call last): File " , line 1 , in < module > NameError : name 'n' is not defined Присутствует полная поддержка операций с плавающей точкой; операции над операндами смешанного типа конвертируют целочисленный операнд в число с плавающей запятой: >>> 3 * 3.75 / 1.5 7.5 >>> 7.0 / 2 3.5 Поддерживаются и комплексные числа, добавлением к мнимым частям суффикса j или J Комплексные числа с ненулевым вещественным компонентом записываются в виде (<вещественная_часть>+<мнимая_часть>j) , или могут быть созданы с помощью функции complex(<вещественная_часть>, <мнимая_часть>) >>> 1j * 1J (- 1 +0j) >>> 1j * complex ( 0 , 1 ) (- 1 +0j) >>> 3 +1j* 3 ( 3 +3j) >>> ( 3 +1j)* 3 ( 9 +3j) >>> ( 1 +2j)/( 1 +1j) ( 1.5 +0.5j) Комплексные числа всегда представлены в виде двух чисел с плавающей запятой - вещественной и мнимой частями. Для получения этих частей из комплексного числа z используется z.real и z.imag соответственно. >>> a = 1.5 +0.5j >>> a.real 1.5 >>> a.imag 0.5 Функции конвертации (приведения) к вещественным и целым числам ( float() , int() ) не работают с комплексными числами, так как нет единственно правильного способа сконвертировать комплексное число в вещественное. Используйте функцию abs(z) чтобы получить модуль числа (в виде числа с плавающей точкой) или z.real чтобы получить его вещественную часть: >>> a = 3.0 +4.0j >>> float (a) Traceback (most recent call last): File " , line 1 , in ? TypeError : can`t convert complex to float ; use abs (z) >>> a.real 3.0 >>> a.imag 4.0 >>> abs (a) # sqrt(a.real**2 + a.imag**2) 5.0 >>> 13 Учебник Python 3.1: Материал из Викиучебника. В интерактивном режиме последнее выведенное выражение сохраняется в переменной _ Это значит, что если вы используете Python в качестве настольного калькулятора — всегда есть способ продолжить вычисления с меньшими усилиями, например: >>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax 12.5625 >>> price + _ 113.0625 >>> round (_ , 2 ) 113.06 >>> Эта переменная для пользователя должна иметь статус только для чтения. Не навязывайте ей значение собственноручно — вы создадите независимую переменную с таким же именем, скрывающую встроенную переменную вместе с её магическими свойствами. Строки Помимо чисел, Python может работать со строками, которые, в свою очередь, могут быть описаны различными способами. Строки могут быть заключены в одинарные или двойные кавычки: >>> 'spam eggs' 'spam eggs' >>> 'doesn \' t' "doesn't" >>> "doesn't" "doesn't" >>> '"Yes," he said.' '"Yes," he said.' >>> " \" Yes, \" he said." '"Yes," he said.' >>> '"Isn \' t," she said.' '"Isn \' t," she said.' Интерпретатор выводит результаты операций над строками тем же способом, каким они были введены: обрамляя в кавычки, и, кроме того, экранируя обратными слэшами внутренние кавычки и другие забавные символы — для того, чтобы отобразить точное значение. Строка заключается в двойные кавычки, если строка содержит одинарные кавычки и ни одной двойной, иначе она заключается в одинарные кавычки. Повторимся, функция print() предоставляет более читаемый вывод. Строковые литералы могут быть разнесены на несколько строк различными способами. Могут быть использованы продолжающие строки, с обратным слэшем в качестве последнего символа строки, сообщающим о том, что следующая строка есть продолжение текущей [8] : hello = "This is a rather long string containing \n\ several lines of text just as you would do in C. \n\ Note that whitespace at the beginning of the line is \ significant." (hello) 14 Учебник Python 3.1: Материал из Викиучебника. Обратите внимание, что новые строки все ещё нужно подключать в строку через \n ; новая строка, за которой следут обратный слэш — не обрабатывается. Запуск примера выведет следующее: This is a rather long string containing several lines of text just as you would do in C. Note that whitespace at the beginning of the line is significant. Если мы объявим строковой литерал сырым (raw) [9] — символы \n не будут конвертированы в новые строки, но и обратный слэш в конце строки, и символ новой строки в исходном коде — будут добавлены в строку в виде данных. Следовательно, код из примера: hello = r "This is a rather long string containing \n\ several lines of text much as you would do in C." (hello) выведет: This is a rather long string containing\n\ several lines of text much as you would do in C. Или, строки могут быть обрамлены совпадающей парой тройных кавычек: """ или ''' Окончания строк не нужно завершать тройными кавычками - при этом будут включены в строку. ( """ Usage: thingy [OPTIONS] -h Display this usage message -H hostname Hostname to connect to """ ) выводит в результате следующее: Usage: thingy [OPTIONS] -h Display this usage message -H hostname Hostname to connect to Строки могут конкатенироваться (склеиваться вместе) операцией + и быть повторенными операцией * : >>> word = 'Help' + 'A' >>> word 'HelpA' >>> '<' + word* 5 + '>' ' |