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

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


Скачать 7.92 Mb.
НазваниеНиколай Прохоренок Владимир Дронов
Дата05.05.2023
Размер7.92 Mb.
Формат файлаpdf
Имя файлаПрохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен.pdf
ТипДокументы
#1111379
страница6 из 83
1   2   3   4   5   6   7   8   9   ...   83
:
>>> for n in range(1, 3): print(n)
1 2
>>>
В предыдущем разделе мы выводили строку "Привет, мир!"
с помощью функции print()
В окне Python Shell это делать не обязательно — мы можем просто ввести строку и нажать клавишу для получения результата:
>>> "Привет, мир!"
'Привет, мир!'
>>>
Обратите внимание на то, что строки выводятся в апострофах. Этого не произойдет, если выводить строку с помощью функции print()
:
>>> print("Привет, мир!")
Привет, мир!
>>>
Учитывая возможность получить результат сразу после ввода команды, окно Python Shell можно использовать для изучения команд, а также в качестве многофункционального каль- кулятора:
>>> 12 * 32 + 54 438
>>>
Результат вычисления последней инструкции сохраняется в переменной
_
(одно подчерки- вание). Это позволяет производить дальнейшие расчеты без ввода предыдущего результата.
Вместо него достаточно ввести символ подчеркивания:
>>> 125 * 3 # Умножение
375
>>> _ + 50 # Сложение. Эквивалентно 375 + 50 425
>>> _ / 5 # Деление. Эквивалентно 425 / 5 85.0
>>>
При вводе команды можно воспользоваться комбинацией клавиш +<Пробел>. В ре- зультате будет отображен список, из которого можно выбрать нужный идентификатор.
Если при открытом списке вводить буквы, то показываться будут идентификаторы, начи- нающиеся с этих букв. Выбирать идентификатор необходимо с помощью клавиш <↑> и
<↓>. После выбора не следует нажимать клавишу , иначе это приведет к выполне- нию инструкции, — просто вводите инструкцию дальше, а список закроется. Такой же спи- сок будет автоматически появляться (с некоторой задержкой) при обращении к атрибутам объекта или модуля после ввода точки. Для автоматического завершения идентификатора

Глава 1. Первые шаги
33 после ввода первых букв можно воспользоваться комбинацией клавиш +. При каждом последующем нажатии этой комбинации будет вставляться следующий идентифи- катор. Эти две комбинации клавиш очень удобны, если вы забыли, как пишется слово, или хотите, чтобы редактор закончил его за вас.
При необходимости повторно выполнить ранее введенную инструкцию ее приходится на- бирать заново. Можно, конечно, скопировать инструкцию, а затем вставить, но как вы мо- жете сами убедиться, в контекстном меню нет пунктов Copy (Копировать) и Paste (Вста- вить). Они расположены в меню Edit. Постоянно выбирать пункты из этого меню очень неудобно. Одним из решений проблемы является использование комбинации клавиш быст- рого доступа + (Копировать) и + (Вставить). Комбинации стандартны для Windows, и вы наверняка их уже использовали ранее. Но опять-таки, прежде чем ско- пировать инструкцию, ее предварительно необходимо выделить. Редактор IDLE избавляет нас от лишних действий и предоставляет комбинацию клавиш + для вставки пер- вой введенной инструкции, а также комбинацию +
для вставки последней инст- рукции. Каждое последующее нажатие этих клавиш будет вставлять следующую (или пре- дыдущую) инструкцию. Для еще более быстрого повторного ввода инструкции следует предварительно ввести ее первые буквы. В этом случае перебираться будут только инст- рукции, начинающиеся с этих букв.
1.6. Вывод результатов работы программы
Вывести результаты работы программы можно с помощью функции print()
. Функция име- ет следующий формат: print([<Объекты>][, sep=' '][, end='\n'][, file=sys.stdout][, flush=False])
Функция print()
преобразует объект в строку и посылает ее в стандартный вывод stdout
С помощью параметра file можно перенаправить вывод в другое место — например, в файл. При этом, если параметр flush имеет значение
False
, выводимые значения будут принудительно записаны в файл. Перенаправление вывода мы подробно рассмотрим при изучении файлов.
После вывода строки автоматически добавляется символ перевода строки: print("Строка 1") print("Строка 2")
Результат:
Строка 1
Строка 2
Если необходимо вывести результат на той же строке, то в функции print()
данные указы- ваются через запятую в первом параметре: print("Строка 1", "Строка 2")
Результат:
Строка 1 Строка 2
Как видно из примера, между выводимыми строками автоматически вставляется пробел.
С помощью параметра sep можно указать другой символ. Например, выведем строки без пробела между ними: print("Строка1", "Строка2", sep="")

34
Часть I. Основы языка Python
Результат:
Строка 1Строка 2
После вывода объектов в конце добавляется символ перевода строки. Если необходимо произвести дальнейший вывод на той же строке, то в параметре end следует указать другой символ: print("Строка 1", "Строка 2", end=" ") print("Строка 3")
# Выведет: Строка 1 Строка 2 Строка 3
Если, наоборот, необходимо вставить символ перевода строки, то функция print()
указы- вается без параметров: for n in range(1, 5): print(n, end=" ") print() print("Это текст на новой строке")
Результат выполнения:
1 2 3 4
Это текст на новой строке
Здесь мы использовали цикл for
, который позволяет последовательно перебирать элементы.
На каждой итерации цикла переменной n
присваивается новое число, которое мы выводим с помощью функции print()
, расположенной на следующей строке.
Обратите внимание, что перед функцией мы добавили четыре пробела. Как уже отмечалось ранее, таким образом в языке Python выделяются блоки. При этом инструкции, перед кото- рыми расположено одинаковое количество пробелов, представляют собой тело цикла. Все эти инструкции выполняются определенное количество раз. Концом блока является инст- рукция, перед которой расположено меньшее количество пробелов. В нашем случае это функция print()
без параметров, которая вставляет символ перевода строки.
Если необходимо вывести большой блок текста, его следует разместить между утроенными кавычками или утроенными апострофами. В этом случае текст сохраняет свое форматиро- вание: print("""Строка 1
Строка 2
Строка 3""")
В результате выполнения этого примера мы получим три строки:
Строка 1
Строка 2
Строка 3
Для вывода результатов работы программы вместо функции print()
можно использовать метод write()
объекта sys.stdout
: import sys # Подключаем модуль sys sys.stdout.write("Строка") # Выводим строку
В первой строке с помощью оператора import мы подключаем модуль sys
, в котором объ- явлен объект stdout
. Далее с помощью метода write()
этого объекта выводим строку. Сле-

Глава 1. Первые шаги
35 дует заметить, что метод не вставляет символ перевода строки, поэтому при необходимости следует добавить его самим с помощью символа
\n
: import sys sys.stdout.write("Строка 1\n") sys.stdout.write("Строка 2")
1.7. Ввод данных
Для ввода данных в Python 3 предназначена функция input()
, которая получает данные со стандартного ввода stdin
. Функция имеет следующий формат:
[<Значение> = ] input([<Сообщение>])
Для примера переделаем нашу первую программу так, чтобы она здоровалась не со всем миром, а только с нами (листинг 1.6).
Листинг 1.6. Пример использования функции input()
# -*- coding: utf-8 -*- name = input("Введите ваше имя: ") print("Привет,", name) input("Нажмите для закрытия окна")
Чтобы окно сразу не закрылось, в конце программы указан еще один вызов функции input()
. В этом случае окно не закроется, пока не будет нажата клавиша .
Вводим код и сохраняем файл, например, под именем test2.py
, а затем запускаем программу на выполнение с помощью двойного щелчка на значке файла. Откроется черное окно, в ко- тором мы увидим надпись: Введите ваше имя:. Вводим свое имя, например
Николай
, и на- жимаем клавишу . В результате будет выведено приветствие: Привет, Николай.
При использовании функции input()
следует учитывать, что при достижении конца файла или при нажатии комбинации клавиш +, а затем клавиши генерируется исключение
EOFError
. Если не предусмотреть обработку исключения, то программа аварий- но завершится. Обработать исключение можно следующим образом: try: s = input("Введите данные: ") print(s) except EOFError: print("Обработали исключение EOFError")
Если внутри блока try возникнет исключение
EOFError
, то управление будет передано в блок except
. После исполнения инструкций в блоке except программа нормально продол- жит работу.
В Python 2 для ввода данных применялись две функции: raw_input()
и input()
. Функция raw_input()
просто возвращала введенные данные, а функция input()
предварительно об- рабатывала данные с помощью функции eval()
и затем возвращала результат ее выполне- ния. В Python 3 функция raw_input()
была переименована в input()
, а прежняя функция input()
— удалена. Чтобы в Python 3 вернуться к поведению функции input()
в стиле
Python 2, необходимо передать значение в функцию eval()
явным образом:

36
Часть I. Основы языка Python
# -*- coding: utf-8 -*- result = eval(input("Введите инструкцию: ")) # Вводим: 2 + 2 print("Результат:", result) # Выведет: 4 input()
В
НИМАНИЕ
!
Функция eval() выполнит любую введенную инструкцию. Никогда не используйте этот код, если не доверяете пользователю.
Передать данные можно в командной строке, указав их после имени файла программы. Та- кие данные доступны через список argv модуля sys
. Первый элемент списка argv будет со- держать название файла запущенной программы, а последующие элементы — переданные данные. Для примера создадим файл test3.py в папке
C:\book
. Содержимое файла приведено в листинге 1.7.
Листинг 1.7. Получение данных из командной строки
# -*- coding: utf-8 -*- import sys arr = sys.argv[:] for n in arr: print(n)
Теперь запустим программу на выполнение из командной строки и передадим ей данные.
Для этого вызовем командную строку: выберем в меню Пуск пункт Выполнить, в открыв- шемся окне наберем команду cmd и нажмем кнопку OK — откроется черное окно команд- ной строки с приглашением для ввода команд. Перейдем в папку
C:\book
, набрав команду: cd C:\book
В командной строке должно появиться приглашение:
C:\book>
Для запуска нашей программы вводим команду:
C:\Python36\python.exe test3.py -uNik -p123
В этой команде мы передаем имя файла (
test3.py
) и некоторые данные (
-uNik и
-p123
).
Результат выполнения программы будет выглядеть так: test3.py
-uNik
-p123 1.8. Доступ к документации
При установке Python на компьютер помимо собственно интерпретатора копируется доку- ментация по этому языку в формате CHM. Чтобы открыть ее, в меню Пуск | Программы
(Все программы) | Python 3.6
нужно выбрать пункт Python 3.6 Manuals (32-bit) или
Python 3.6 Manuals (64-bit)
Если в меню Пуск | Программы (Все программы) | Python 3.6 выбрать пункт Python 3.6
Module Docs (32-bit)
или Python 3.6 Module Docs (64-bit), запустится сервер документов

Глава 1. Первые шаги
37 pydoc (рис. 1.11). Он представляет собой написанную на самом Python программу веб- сервера, выводящую результаты своей работы в веб-браузере.
Сразу после запуска pydoc откроется веб-браузер, в котором будет выведен список всех стандартных модулей, поставляющихся в составе Python. Щелкнув на названии модуля, представляющем собой гиперссылку, мы откроем страницу с описанием всех классов, функций и констант, объявленных в этом модуле.
Рис. 1.11. Окно pydoc
Чтобы завершить работу pydoc, следует переключиться в его окно (см. рис. 1.11), ввести в нем команду q
(от quit, выйти) и нажать клавишу — окно при этом автоматически закроется. А введенная там команда b
(от browser, браузер) повторно выведет в браузере страницу со списком модулей.
В окне Python Shell также можно отобразить документацию. Для этого предназначена функция help()
. В качестве примера отобразим документацию по встроенной функции input()
:
>>> help(input)
Результат выполнения:
Help on built-in function input in module builtins: input(prompt=None, /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
С помощью функции help()
можно получить документацию не только по конкретной функции, но и по всему модулю сразу. Для этого предварительно необходимо подключить модуль. Например, подключим модуль builtins
, содержащий определения всех встроенных функций и классов, а затем выведем документацию по этому модулю:

38
Часть I. Основы языка Python
>>> import builtins
>>> help(builtins)
При рассмотрении комментариев мы говорили, что часто для комментирования большого фрагмента кода используются утроенные кавычки или утроенные апострофы. Такие строки не являются комментариями в полном смысле этого слова. Вместо комментирования фраг- мента создается объект строкового типа, который сохраняется в атрибуте
__doc__
. Функция help()
при составлении документации получает информацию из этого атрибута. Такие строки называются строками документирования.
В качестве примера создадим файл test4.py
, содержимое которого показано в листинге 1.8.
Листинг 1.8. Тестовый модуль test4.py
# -*- coding: utf-8 -*-
""" Это описание нашего модуля """ def func():
""" Это описание функции""" pass
Теперь подключим этот модуль и выведем содержимое строк документирования. Все эти действия выполняет код из листинга 1.9.
Листинг 1.9. Вывод строк документирования посредством функции help()
# -*- coding: utf-8 -*- import test4 # Подключаем файл test4.py help(test4) input()
Запустим эту программу из среды Python Shell. (Если запустить ее щелчком мыши, вывод будет выполнен в окне интерактивной оболочки, и результат окажется нечитаемым. Веро- ятно, это происходит вследствие ошибки в интерпретаторе.) Вот что мы увидим:
Help on module test4:
NAME test4 - Это описание нашего модуля
FUNCTIONS func()
Это описание функции
FILE d:\data\документы\работа\книги\python 3 и pyqt 5 разработка приложений ii\примеры\1\test4.py
Теперь получим содержимое строк документирования с помощью атрибута
__doc__
. Как это делается, показывает код из листинга 1.10.

Глава 1. Первые шаги
39
Листинг 1.10. Вывод строк документирования посредством атрибута __doc__
# -*- coding: utf-8 -*- import test4 # Подключаем файл test4.py print(test4.__doc__) print(test4.func.__doc__) input()
Результат выполнения:
Это описание нашего модуля
Это описание функции
Атрибут
__doc__
можно использовать вместо функции help()
. В качестве примера получим документацию по функции input()
:
>>> print(input.__doc__)
Результат выполнения:
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
Получить список всех идентификаторов внутри модуля позволяет функция dir()
. Пример ее использования показывает код из листинга 1.11.
Листинг 1.11. Получение списка идентификаторов
# -*- coding: utf-8 -*- import test4 # Подключаем файл test4.py print(dir(test4)) input()
Результат выполнения:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__spec__', 'func']
Теперь получим список всех встроенных идентификаторов:
>>> import builtins
>>> print(dir(builtins))
Функция dir()
может не принимать параметров вообще. В этом случае возвращается спи- сок идентификаторов текущего модуля:
>>> print(dir())
Результат выполнения:
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__',
'__package__', '__spec__']

ГЛ А В А
2
Переменные
Все данные в языке Python представлены объектами. Каждый объект имеет тип данных и значение. Для доступа к объекту предназначены переменные. При инициализации в пере- менной сохраняется ссылка на объект (адрес объекта в памяти компьютера). Благодаря этой ссылке можно в дальнейшем изменять объект из программы.
2.1. Именование переменных
Каждая переменная должна иметь уникальное имя, состоящее из латинских букв, цифр и знаков подчеркивания, причем имя переменной не может начинаться с цифры. Кроме того, следует избегать указания символа подчеркивания в начале имени, поскольку идентифика- торам с таким символом определено специальное назначение. Например, имена, начинаю- щиеся с символа подчеркивания, не импортируются из модуля с помощью инструкции from module import *
, а имена, включающие по два символа подчеркивания — в начале и в кон- це, для интерпретатора имеют особый смысл.
В качестве имени переменной нельзя использовать ключевые слова. Получить список всех ключевых слов позволяет такой код:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if',
'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return',
'try', 'while', 'with', 'yield']
Помимо ключевых слов, следует избегать совпадений со встроенными идентификаторами.
Дело в том, что, в отличие от ключевых слов, встроенные идентификаторы можно переоп- ределять, но дальнейший результат может стать для вас неожиданным:
>>> help(abs)
Help on built-in function abs in module builtins: abs(x, /)
Return the absolute value of the argument.
>>> help = 10
>>> help
10

Глава 2. Переменные
41
>>> help(abs)
Traceback (most recent call last):
File "
", line 1, in help(abs)
TypeError: 'int' object is not callable
В этом примере мы с помощью встроенной функции help() получаем справку по функции abs()
1   2   3   4   5   6   7   8   9   ...   83


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