Главная страница

ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов


Скачать 7.92 Mb.
НазваниеНиколай Прохоренок Владимир Дронов
Дата05.05.2023
Размер7.92 Mb.
Формат файлаpdf
Имя файлаПрохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен.pdf
ТипДокументы
#1111379
страница5 из 83
1   2   3   4   5   6   7   8   9   ...   83

Глава 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 или нажимаем комбинацию клавиш +. В открывшемся окне набираем код из листинга 1.2, а за- тем сохраняем его под именем hello_world.py
, выбрав пункт меню File | Save (комбинация клавиш +). При этом редактор сохранит файл в кодировке UTF-8 без BOM (Byte
Order Mark, метка порядка байтов). Именно кодировка UTF-8 является кодировкой по умолчанию в Python 3. Если файл содержит инструкции в другой кодировке, то необходимо в первой или второй строке указать кодировку с помощью инструкции:
# -*- coding: <Кодировка> -*-
Например, для кодировки Windows-1251 инструкция будет выглядеть так:
# -*- coding: cp1251 -*-
Редактор IDLE учитывает указанную кодировку и автоматически производит перекодиро- вание при сохранении файла. При использовании других редакторов следует проконтроли- ровать соответствие указанной кодировки и реальной кодировки файла. Если кодировки не совпадают, то данные будут преобразованы некорректно, или во время преобразования произойдет ошибка.
Запустить программу на выполнение можно, выбрав пункт меню Run | Run Module или нажав клавишу . Результат выполнения программы будет отображен в окне Python
Shell
Запустить программу также можно с помощью двойного щелчка мыши на значке файла.
В этом случае результат выполнения будет отображен в консоли Windows. Следует учиты- вать, что после вывода результата окно консоли сразу закрывается. Чтобы предотвратить закрытие окна, необходимо добавить вызов функции input()
, которая станет ожидать нажа- тия клавиши и не позволит окну сразу закрыться. С учетом сказанного наша про- грамма будет выглядеть так, как показано в листинге 1.3.
Листинг 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 зультат (при условии, что инструкция возвращает значение), а далее — приглашение для ввода новой команды. При вводе многострочной команды после нажатия клавиши редактор автоматически вставит отступ и будет ожидать дальнейшего ввода. Чтобы сооб- щить редактору о конце ввода команды, необходимо дважды нажать клавишу
1   2   3   4   5   6   7   8   9   ...   83


написать администратору сайта