Python/Учебник Python 3.9

Материал из Викиучебника — открытых книг для открытого мира
Документация Python
Эта статья — часть Документации по языку Python
Исходный текст http://docs.python.org/3.9/tutorial/
Автор Фред Л. Дрейк мл. (Fred L. Drake, Jr. ) и другие
Релиз 3.9
Версия от 25 апреля 2020


Python - это мощный, и в то же время не сложный в освоении язык программирования. В нем реализованы эффективные высокоуровневые структуры данных и простой, но действенный подход к объектно-ориентированному программированию. Элегантный синтаксис и динамическая типизация Python вместе с его интерпретируемой природой делают его идеальным языком для написания сценариев и разработки приложений в кратчайшие сроки во многих областях деятельности на большинстве платформ. Интерпретатор Python и обширная стандартная библиотека доступны в виде исходных или бинарных файлов для всех основных платформ на веб-сайте Python https://www.python.org/ и могут свободно распространяться. На этом же сайте размещены дистрибутивы и ссылки на многие бесплатные сторонние модули Python, программы и инструменты, а также дополнительная документация.

Интерпретатор Python легко расширяется новыми функциями и типами данных, реализованными на C или C ++ (или других языках, вызываемых из C). Python также подходит в качестве языка расширения для настраиваемых приложений.

Это руководство неформально знакомит читателя с основными понятиями и особенностями языка и системы Python. Оно помогает овладеть практическим опытом использования интерпретатора Python, при этом все представленные в учебнике примеры являются самодостаточными, так что пособие можно читать и в независимом режиме.

Описание стандартных объектов и модулей приведено в Стандартной библиотеке Python. Справочник по языку Python дает более формальное определение языка. Чтобы писать расширения на C или C ++, следует читать Расширение и встраивание интерпретатора Python и Справочное руководство по Python/C API. Также существует литература, подробно освещающая язык Python.

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

Также стоит ознакомится с Глоссарием.

<html> Игра - угадай число
Введите число от 0 до 9: <input type="text" name="gg" id="gg"> <input type="button" value="Играем!!!" onclick="game()"> <script> function game(){ //alert("1"); var elem1 = Math.floor(Math.random() * 10); var elem = document.getElementById("gg").value; if (elem == ""){ alert("Вы не ввели число"); document.getElementById("gg").value = ""; exit(); } if (elem == elem1){ alert("Вы выиграли!!! Поздравляем!!!"); //window.close(); } else { alert("Вы не угодали, попробуйте еще! Компьютер загал число: " + elem1); document.getElementById("gg").value = ""; }

} </script> </html>

Использование интерпретатора Python[править]

Вызов интерпретатора[править]

Передача аргументов[править]

Интерактивный режим[править]

Интерпретатор и его окружение[править]

Кодировка исходного кода[править]

Неформальное введение в Python[править]

В приведенных далее примерах, ввод и вывод различаются наличием и отсутствием приглашений (>>> и …): чтобы повторить пример, необходимо ввести все, что следует за приглашением; строки, которые не начинаются с приглашения, являются выводом интерпретатора. Стоит заметить, что вторичное приглашение в строке примера означает, что необходимо ввести пустую строку для завершения многострочной команды.

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

Некоторые примеры:

# это первый комментарий
spam = 1  # а это второй комментарий
          # ... а теперь третий!
text = "# Это не комментарий, т.к. текст внутри кавычек."

Использование Python в качестве калькулятора[править]

Опробуем несколько простых Python команд. Запустим интерпретатор и дождемся основного приглашения, >>>. (Это не должно занять много времени.)

Числа[править]

Интерпретатор действует как простой калькулятор: при вводе выражения он выводим соответствующее значение. Синтаксис выражения прост: операторы +, -, * и / работают так же, как и в большинстве других языков (например, Pascal или C); круглые скобки (()) используются для группирования. Например:

>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5  # Деление всегда возвращает число с плавающей точкой
1.6

Целые числа (такие как 2, 4, 20) имеют тип int, числа с дробной частью (такие как 5.0, 1.6) - тип float. Подробнее о числовых типах позже в этом учебнике.

Деление (/) всегда возвращает число с плавающей точкой. Чтобы выполнить floor division и получить целочисленный результат (отбросив дробную часть) можно использовать оператор //; для расчета остатка от деления используется %:

>>> 17 / 3  # Классическое деление возвращает число с плавающей точкой
5.666666666666667
>>>
>>> 17 // 3  # floor division отбрасывает дробную часть
5
>>> 17 % 3  # Оператор % возвращает остаток от деления
2
>>> 5 * 3 + 2  # результат * делитель + остаток
17

В Python для вычисления степеней можно использовать оператор ** 1:

>>> 5 ** 2  # 5 в квадрате
25
>>> 2 ** 7  # 2 в степени 7
128

Символ равенства (=) используется для присваивания значения переменной. Результат этой операции перед следующим приглашением ввода не отображается:

>>> width = 20
>>> height = 5 * 9
>>> width * height
900

Если переменная не “определена” (т.е. ей не было присвоено значение), попытка ее использования приведет к ошибке:

>>> n  # Попытаться получить доступ к неопределенной переменной
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

Имеется полная поддержка чисел с плавающей точкой; операторы с операндами смешанного типа преобразуют целочисленный операнд в число с плавающей точкой:

>>> 4 * 3.75 - 1
14.0

В интерактивном режиме последний выведенный результат присваивается переменной _. Это означает, что при использовании Python в качестве настольного калькулятора, возобновить вычисления достаточно просто, например:

>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06

Эта переменная должна рассматриваться пользователем как доступная только для чтения. Не стоит назначать ей значение явно — это привело бы к созданию независимой локальной переменной с таким же именем, которая маскирует встроенную переменную с ее необычным поведением. Кроме int и float, Python поддерживает другие типы чисел, такие как Decimal и Fraction. Python также имеет встроенную поддержку комплексных чисел и использует суффикс j или J для обозначения мнимой части (например, 3+5j).

Строки[править]

Помимо чисел, Python также может манипулировать строками, которые могут быть выражены несколькими способами. Строки могут быть заключены в одинарные ('...') или двойные кавычки ("..."), что дает одинаковый результат 2. Символ \ может использоваться для экранирования кавычек:

>>> 'spam eggs'  # Одинарные кавычки
'spam eggs'
>>> 'doesn\'t'  # \' используется для экранирования* одиночной кавычки... экранирование -> отображения одинарной или двойной кавычки стоящей после \
"doesn't"
>>> "doesn't"  # ...или, как вариант, двойные кавычки
"doesn't"
>>> '"Yes," they said.'
'"Yes," they said.'
>>> "\"Yes,\" they said."
'"Yes," they said.'
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'

В интерактивном режиме выходная строка заключается в кавычки, а специальные символы экранируются символами \. Не смотря на то, что иногда могут возникнуть отличия от исходного ввода (кавычки могут измениться), обе строки эквивалентны. Строка заключается в двойные кавычки, если она содержит одинарные кавычки и не содержит двойных кавычек, в противном случае строка заключается в одинарные кавычки. Функция print() выполняет более читаемый вывод — опускает обрамляющие кавычки и печатает экранированные и специальные символы:

>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
>>> print('"Isn\'t," they said.')
"Isn't," they said.
>>> s = 'Первая строка.\nВторая Строка.'  # \n означает перевод строки
>>> s  # Без функции print() \n включен в вывод
'Первая строка.\nВторая Строка.'
>>> print(s)  # С функцией print() \n совершает переход на новую строку
Первая строка.
Вторая Строка.

Если необходимо чтобы символы, начинающиеся с \ интерпретировались как специальные, можно воспользоваться raw-строками добавив r перед первой кавычкой:

>>> print('C:\some\name')  # Здесь \n означает перевод строки!
C:\some
ame
>>> print(r'C:\some\name')  # Символ r перед кавычкой
C:\some\name

Строковые литералы можно разместить на нескольких строках. Один из способов заключается в использовании тройных кавычек: """...""" или .... Конец строк автоматически включается в строку, но этого можно избежать, если добавить \ в конце строки. Следующий пример:

print("""\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
""")

производит такой вывод (стоит заметить, что начальный перевод строки не включен):

Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname

Списки[править]

Первые шаги к программированию[править]

Больше средств управления потоком[править]

Оператор if[править]

Оператор for[править]

Функция range()[править]

Операторы break и continue, а также условия else в циклах[править]

Оператор pass[править]

Определение функций[править]

Подробнее об определении функций[править]

Значения аргументов по умолчанию[править]

Именованные аргументы[править]

Специальные параметры[править]

Позиционные или именованные аргументы[править]
Только позиционные аргументы[править]
Только именованные аргументы[править]
Примеры функций[править]
Резюме[править]

Списки произвольных аргументов[править]

Распаковка списков аргументов[править]

Lambda-выражения[править]

Строки документации[править]

Аннотации функций[править]

Интермеццо: стиль кодирования[править]

Структуры данных[править]

Подробнее о списках[править]

Использование списка в качестве стека[править]

Использование списка в качестве очереди[править]

Генераторы списков[править]

Генераторы вложенных списков[править]

Оператор del[править]

Кортежи и последовательности[править]

Множества[править]

Словари[править]

Методики организации циклов[править]

Подробнее об условиях[править]

Сравнение последовательностей и других типов[править]

Modules[править]

More on Modules[править]

Executing modules as scripts[править]

The Module Search Path[править]

“Compiled” Python files[править]

Standard Modules[править]

The dir() Function[править]

Packages[править]

Importing * From a Package[править]

Intra-package References[править]

Packages in Multiple Directories[править]

Input and Output[править]

Fancier Output Formatting[править]

Formatted String Literals[править]

The String format() Method[править]

Manual String Formatting[править]

Old string formatting[править]

Reading and Writing Files[править]

Methods of File Objects[править]

Saving structured data with json[править]

Errors and Exceptions[править]

Syntax Errors[править]

Exceptions[править]

Handling Exceptions[править]

Raising Exceptions[править]

Exception Chaining[править]

User-defined Exceptions[править]

Defining Clean-up Actions[править]

Predefined Clean-up Actions[править]

Classes[править]

A Word About Names and Objects[править]

Python Scopes and Namespaces[править]

Scopes and Namespaces Example[править]

A First Look at Classes[править]

Class Definition Syntax[править]

Class Objects[править]

Instance Objects[править]

Method Objects[править]

Class and Instance Variables[править]

Random Remarks[править]

Inheritance[править]

Multiple Inheritance[править]

Private Variables[править]

Odds and Ends[править]

Iterators[править]

Generators[править]

Generator Expressions[править]

Brief Tour of the Standard Library[править]

Operating System Interface[править]

File Wildcards[править]

Command Line Arguments[править]

Error Output Redirection and Program Termination[править]

String Pattern Matching[править]

Mathematics[править]

Internet Access[править]

Dates and Times[править]

Data Compression[править]

Performance Measurement[править]

Quality Control[править]

Batteries Included[править]

Brief Tour of the Standard Library — Part II[править]

Output Formatting[править]

Templating[править]

Working with Binary Data Record Layouts[править]

Multi-threading[править]

Logging[править]

Weak References[править]

Tools for Working with Lists[править]

Decimal Floating Point Arithmetic[править]

Virtual Environments and Packages[править]

Introduction[править]

Creating Virtual Environments[править]

Managing Packages with pip[править]

What Now?[править]

Interactive Input Editing and History Substitution[править]

Tab Completion and History Editing[править]

Alternatives to the Interactive Interpreter[править]

Floating Point Arithmetic: Issues and Limitations[править]

Representation Error[править]

Appendix[править]

Interactive Mode[править]

Error Handling[править]

Executable Python Scripts[править]

The Interactive Startup File[править]

The Customization Modules[править]