ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов
Скачать 7.92 Mb.
|
Глава 1. Первые шаги 23 Рис. 1.6. Окно Python Shell редактора IDLE 1.1.1. Установка нескольких интерпретаторов Python Версии языка Python выпускаются с завидной регулярностью, но, к сожалению, сторонние разработчики не успевают за такой скоростью и не столь часто обновляют свои модули. Поэтому иногда приходится при наличии версии Python 3 использовать на практике также и версию Python 2. Как же быть, если установлена версия 3.6, а необходимо запустить модуль для версии 2.7? В этом случае удалять версию 3.6 с компьютера не нужно. Все программы установки позволяют выбрать устанавливаемые компоненты. Существует также возмож- ность задать ассоциацию запускаемой версии с файловым расширением — так вот эту воз- можность необходимо отключить при установке. В качестве примера мы дополнительно установим на компьютер версию 2.7.13.2716, но вместо программы установки с сайта https://www.python.org/ выберем альтернативный дистрибутив от компании ActiveState. Итак, переходим на страницу http://www.activestate.com/activepython/downloads/ и скачи- ваем дистрибутив. Последовательность запуска нескольких программ установки от компа- нии ActiveState имеет значение, поскольку в контекстное меню добавляется пункт Edit with Pythonwin . С помощью этого пункта запускается редактор PythonWin, который можно ис- пользовать вместо IDLE. Соответственно, из контекстного меню будет открываться версия PythonWin, установленная последней. Установку программы производим в каталог по умолчанию ( C:\Python27 ). В НИМАНИЕ ! При установке в окне Choose Setup Type (рис. 1.7) необходимо нажать кнопку Custom, а в окне Choose Setup Options (рис. 1.8) — сбросить флажки Add Python to the PATH environment variable и Create Python file extension associations. Не забудьте это сде- лать, иначе Python 3.6.3 перестанет быть текущей версией. В состав ActivePython, кроме редактора PythonWin, входит также редактор IDLE. Однако в меню Пуск нет пункта, с помощью которого можно его запустить. Чтобы это исправить, создадим файл IDLE27.cmd со следующим содержимым: 24 Часть I. Основы языка Python @echo off start C:\Python27\pythonw.exe C:\Python27\Lib\idlelib\idle.pyw С помощью двойного щелчка на этом файле можно будет запускать редактор IDLE для вер- сии Python 2.7. Ну, а запуск IDLE для версии Python 3.6 будет по-прежнему осуществляться так же, как и предлагалось ранее, — выбором в меню Пуск | Программы (Все программы) | Python 3.6 пункта IDLE (Python 3.6 32-bit) или IDLE (Python 3.6 64-bit). Рис. 1.7. Окно Choose Setup Type Рис. 1.8. Окно Choose Setup Options Глава 1. Первые шаги 25 1.1.2. Запуск программы с помощью разных версий Python Теперь рассмотрим запуск программы с помощью разных версий Python. По умолчанию при двойном щелчке на значке файла запускается Python 3.6. Чтобы запустить Python- программу с помощью другой версии этого языка, щелкаем правой кнопкой мыши на знач- ке файла с программой и в контекстном меню находим пункт Открыть с помощью. На экране откроется небольшое окно выбора альтернативной программы для запуска файла (рис. 1.9). Сразу же сбросим флажок Всегда использовать это приложение для открытия .py файлов (подпись у этого флажка различается в разных версиях Windows) и щелкнем на гиперссылке Еще приложения. В окне появится список установленных на вашем компью- тере программ, но нужного нам приложения Python 2.7 в нем не будет. Поэтому щелкнем на ссылке Найти другое приложение на этом компьютере, находящейся под списком. На экране откроется стандартное диалоговое окно открытия файла, в котором мы выберем про- грамму python.exe , python2.exe или python2.7.exe из папки C:\Python27 Рис. 1.9. Диалоговое окно выбора альтернативной программы для запуска файла В Windows Vista, 7, 8 и 8.1 выбранная нами программа появится в подменю, открывающем- ся при выборе пункта Открыть с помощью (рис. 1.10), — здесь Python 2.7 представлен как Python Launcher for Windows (Console) . А в Windows 10 она будет присутствовать в спи- ске, что выводится в диалоговом окне выбора альтернативной программы (см. рис. 1.9). Для проверки установки создайте файл test.py с помощью любого текстового редактора — например, Блокнота. Содержимое файла приведено в листинге 1.1. Листинг 1.1. Проверка установки import sys print (tuple(sys.version_info)) try: raw_input() # Python 2 except NameError: input() # Python 3 26 Часть I. Основы языка Python Рис. 1.10. Варианты запуска программы разными версиями Python Затем запустите программу с помощью двойного щелчка на значке файла. Если результат выполнения: (3, 6, 3, 'final', 0) , то установка прошла нормально, а если (2, 7, 13, 'final', 0) , то вы не сбросили флажки Add Python to the PATH environment variable и Create Python file extension associations в окне Choose Setup Options (см. рис. 1.8). Для изучения материала этой книги по умолчанию должна запускаться версия Python 3.6. 1.2. Первая программа на Python Изучение языков программирования принято начинать с программы, выводящей надпись «Привет, мир!» Не будем нарушать традиции и продемонстрируем, как это будет выглядеть на Python (листинг 1.2). Листинг 1.2. Первая программа на Python # Выводим надпись с помощью функции print() print("Привет, мир!") Для запуска программы в меню Пуск | Программы (Все программы) | Python 3.6 выбира- ем пункт IDLE (Python 3.6 32-bit) или IDLE (Python 3.6 64-bit). В результате откроется окно Python Shell, в котором символы >>> означают приглашение ввести команду (см. рис. 1.6). Вводим сначала первую строку из листинга 1.2, а затем вторую. После ввода каж- дой строки нажимаем клавишу >>> # Выводим надпись с помощью функции print() >>> print("Привет, мир!") Привет, мир! >>> П РИМЕЧАНИЕ Символы >>> вводить не нужно, они вставляются автоматически. Глава 1. Первые шаги 27 Для создания файла с программой в меню File выбираем пункт New File или нажимаем комбинацию клавиш , выбрав пункт меню File | Save (комбинация клавиш Order Mark, метка порядка байтов). Именно кодировка UTF-8 является кодировкой по умолчанию в Python 3. Если файл содержит инструкции в другой кодировке, то необходимо в первой или второй строке указать кодировку с помощью инструкции: # -*- coding: <Кодировка> -*- Например, для кодировки Windows-1251 инструкция будет выглядеть так: # -*- coding: cp1251 -*- Редактор IDLE учитывает указанную кодировку и автоматически производит перекодиро- вание при сохранении файла. При использовании других редакторов следует проконтроли- ровать соответствие указанной кодировки и реальной кодировки файла. Если кодировки не совпадают, то данные будут преобразованы некорректно, или во время преобразования произойдет ошибка. Запустить программу на выполнение можно, выбрав пункт меню Run | Run Module или нажав клавишу Shell Запустить программу также можно с помощью двойного щелчка мыши на значке файла. В этом случае результат выполнения будет отображен в консоли Windows. Следует учиты- вать, что после вывода результата окно консоли сразу закрывается. Чтобы предотвратить закрытие окна, необходимо добавить вызов функции input() , которая станет ожидать нажа- тия клавиши Листинг 1.3. Программа для запуска с помощью двойного щелчка мыши # -*- coding: utf-8 -*- print("Привет, мир!") # Выводим строку input() # Ожидаем нажатия клавиши П РИМЕЧАНИЕ Если до выполнения функции input() возникнет ошибка, то сообщение о ней будет выве- дено в консоль, но сама консоль после этого сразу закроется, и вы не сможете прочитать сообщение об ошибке. Попав в подобную ситуацию, запустите программу из командной строки или с помощью редактора IDLE, и вы сможете прочитать сообщение об ошибке. В языке Python 3 строки по умолчанию хранятся в кодировке Unicode. При выводе кодиров- ка Unicode автоматически преобразуется в кодировку терминала. Поэтому русские буквы отображаются корректно, хотя в окне консоли в Windows по умолчанию используется ко- дировка cp866, а файл с программой у нас в кодировке UTF-8. Чтобы отредактировать уже созданный файл, запустим IDLE, выполним команду меню File | Open (комбинация клавиш Н АПОМИНАНИЕ Поскольку программа на языке Python представляет собой обычный текстовый файл, сохраненный с расширением py или pyw, его можно редактировать с помощью других про- 28 Часть I. Основы языка Python грамм, например Notepad++. Можно также воспользоваться специализированными редакторами, скажем, PyScripter. Когда интерпретатор Python начинает выполнение программы, хранящейся в файле, он сначала компилирует ее в особое внутреннее представление, — это делается с целью увели- чить производительность кода. Файл с откомпилированным кодом хранится в папке __pycache__ , вложенной в папку, где хранится сам файл программы, а его имя имеет сле- дующий вид: <имя файла с исходным, неоткомпилированным кодом>.cpython-<первые две цифры номера версии Python>.pyc Так, при запуске на исполнение файла test4.py будет создан файл откомпилированного кода с именем test4.cpython-36.pyc При последующем запуске на выполнение того же файла будет исполняться именно отком- пилированный код. Если же мы исправим исходный код, программа его автоматически перекомпилирует. При необходимости мы можем удалить файлы с откомпилированным кодом или даже саму папку __pycache__ — впоследствии интерпретатор сформирует их заново. 1.3. Структура программы Как вы уже знаете, программа на языке Python представляет собой обычный текстовый файл с инструкциями. Каждая инструкция располагается на отдельной строке. Если инст- рукция не является вложенной, она должна начинаться с начала строки, иначе будет выве- дено сообщение об ошибке: >>> import sys SyntaxError: unexpected indent >>> В этом случае перед инструкцией import расположен один лишний пробел, который привел к выводу сообщения об ошибке. Если программа предназначена для исполнения в операционной системе UNIX, то в первой строке необходимо указать путь к интерпретатору Python: #!/usr/bin/python В некоторых операционных системах путь к интерпретатору выглядит по-другому: #!/usr/local/bin/python Иногда можно не указывать точный путь к интерпретатору, а передать название языка про- грамме env : #!/usr/bin/env python В этом случае программа env произведет поиск интерпретатора Python в соответствии с на- стройками путей поиска. Помимо указания пути к интерпретатору Python, необходимо, чтобы в правах доступа к файлу был установлен бит на выполнение. Кроме того, следует помнить, что перевод строки в операционной системе Windows состоит из последовательности символов \r (пе- ревод каретки) и \n (перевод строки). В операционной системе UNIX перевод строки осу- Глава 1. Первые шаги 29 ществляется только одним символом \n . Если загрузить файл программы по протоколу FTP в бинарном режиме, то символ \r вызовет фатальную ошибку. По этой причине файлы по протоколу FTP следует загружать только в текстовом режиме (режим ASCII). В этом режи- ме символ \r будет удален автоматически. После загрузки файла следует установить права на выполнение. Для исполнения скриптов на Python устанавливаем права в 755 ( -rwxr-xr-x ). Во второй строке (для ОС Windows в первой строке) следует указать кодировку. Если коди- ровка не указана, то предполагается, что файл сохранен в кодировке UTF-8. Для кодировки Windows-1251 строка будет выглядеть так: # -*- coding: cp1251 -*- Редактор IDLE учитывает указанную кодировку и автоматически производит перекодиро- вание при сохранении файла. Получить полный список поддерживаемых кодировок и их псевдонимы позволяет код, приведенный в листинге 1.4. Листинг 1.4. Вывод списка поддерживаемых кодировок # -*- coding: utf-8 -*- import encodings.aliases arr = encodings.aliases.aliases keys = list( arr.keys() ) keys.sort() for key in keys: print("%s => %s" % (key, arr[key])) Во многих языках программирования (например, в PHP, Perl и др.) каждая инструкция должна завершаться точкой с запятой. В языке Python в конце инструкции также можно поставить точку с запятой, но это не обязательно. Более того, в отличие от языка JavaScript, где рекомендуется завершать инструкции точкой с запятой, в языке Python точку с запятой ставить не рекомендуется. Концом инструкции является конец строки. Тем не менее, если необходимо разместить несколько инструкций на одной строке, точку с запятой следует указать: >>> x = 5; y = 10; z = x + y # Три инструкции на одной строке >>> print(z) 15 Еще одной отличительной особенностью языка Python является отсутствие ограничитель- ных символов для выделения инструкций внутри блока. Например, в языке PHP инструкции внутри цикла while выделяются фигурными скобками: $i = 1; while ($i < 11) { echo $i . "\n"; $i++; } echo "Конец программы"; В языке Python тот же код будет выглядеть по-другому (листинг 1.5). 30 Часть I. Основы языка Python Листинг 1.5. Выделение инструкций внутри блока i = 1 while i < 11: print(i) i += 1 print("Конец программы") Обратите внимание, что перед всеми инструкциями внутри блока расположено одинаковое количество пробелов. Именно так в языке Python выделяются блоки. Инструкции, перед которыми расположено одинаковое количество пробелов, являются телом блока. В нашем примере две инструкции выполняются десять раз. Концом блока является инструкция, пе- ред которой расположено меньшее количество пробелов. В нашем случае это функция print() , которая выводит строку "Конец программы" . Если количество пробелов внутри бло- ка окажется разным, то интерпретатор выведет сообщение о фатальной ошибке, и програм- ма будет остановлена. Так язык Python приучает программистов писать красивый и понят- ный код. П РИМЕЧАНИЕ В языке Python принято использовать четыре пробела для выделения инструкций внутри блока. Если блок состоит из одной инструкции, то допустимо разместить ее на одной строке с ос- новной инструкцией. Например, код: for i in range(1, 11): print(i) print("Конец программы") можно записать так: for i in range(1, 11): print(i) print("Конец программы") Если инструкция является слишком длинной, то ее можно перенести на следующую строку, например, так: в конце строки поставить символ \ , после которого должен следовать перевод строки. Другие символы (в том числе и комментарии) недопустимы. Пример: x = 15 + 20 \ + 30 print(x) поместить выражение внутри круглых скобок. Этот способ лучше, т. к. внутри круглых скобок можно разместить любое выражение. Пример: x = (15 + 20 # Это комментарий + 30) print(x) определение списка и словаря можно разместить на нескольких строках, т. к. при этом используются квадратные и фигурные скобки соответственно. Пример определения списка: arr = [15, 20, # Это комментарий 30] print(arr) Глава 1. Первые шаги 31 Пример определения словаря: arr = {"x": 15, "y": 20, # Это комментарий "z": 30} print(arr) 1.4. Комментарии Комментарии предназначены для вставки пояснений в текст программы, интерпретатор полностью их игнорирует. Внутри комментария может располагаться любой текст, включая инструкции, которые выполнять не следует. С ОВЕТ Помните — комментарии нужны программисту, а не интерпретатору Python. Вставка ком- ментариев в код позволит через некоторое время быстро вспомнить предназначение фрагмента кода. В языке Python присутствует только однострочный комментарий. Он начинается с символа # : # Это комментарий Однострочный комментарий может начинаться не только с начала строки, но и распола- гаться после инструкции. Например, в следующем примере комментарий расположен после инструкции, предписывающей вывести надпись "Привет, мир!" : print("Привет, мир!") # Выводим надпись с помощью функции print() Если же символ комментария разместить перед инструкцией, то она не будет выполнена: # print("Привет, мир!") Эта инструкция выполнена не будет Если символ # расположен внутри кавычек или апострофов, то он не является символом комментария: print("# Это НЕ комментарий") Так как в языке Python нет многострочного комментария, то комментируемый фрагмент часто размещают внутри утроенных кавычек (или утроенных апострофов): """ Эта инструкция выполнена не будет print("Привет, мир!") """ Следует заметить, что этот фрагмент кода не игнорируется интерпретатором, т. к. он не яв- ляется комментарием. В результате выполнения фрагмента будет создан объект строкового типа. Тем не менее, инструкции внутри утроенных кавычек выполнены не будут, поскольку интерпретатор сочтет их простым текстом. Такие строки являются строками документиро- вания, а не комментариями. 1.5. Дополнительные возможности IDLE Поскольку в процессе изучения материала этой книги в качестве редактора мы будем ис- пользовать IDLE, рассмотрим дополнительные возможности этой среды разработки. Как вы уже знаете, в окне Python Shell символы >>> означают приглашение ввести команду. Введя команду, нажимаем клавишу 32 Часть I. Основы языка Python зультат (при условии, что инструкция возвращает значение), а далее — приглашение для ввода новой команды. При вводе многострочной команды после нажатия клавиши |