Python. краткий справочник
Содержание:
- Операторы сравнения в Python
- # Сравнение строк
- Быстрый алгоритм Евклида
- Списки, кортежи, множества и словари
- Установка и подготовка среды
- Операторы:
- Где используется Python и почему
- Логические операторы
- Сравнение
- Битовые операторы в Python
- Numpy invert для отрицания логического значения
- Арифметические операторы Python
- Изучаем Python: куда дальше?
- # Сложные логические выражения
- Работа с файлами
Операторы сравнения в Python
Операторы сравнения значений по обе стороны от них и решить, соотношение между ними. Их также называют реляционные операторы.
Предположим, переменная а
содержит значение 10, а переменная б
имеет значение 20, то:
оператор | Описание | пример |
---|---|---|
== | Если значения двух операндов равны, то условие становится истинным. | (а == б) не верно. |
!= | Если значения двух операндов не равны, то условие становится истинным. | (а! = б) истинно. |
> | Если значение левого операнда больше значения правого операнда, то условие становится истинным. | (а > б) не верно. |
Если значение левого операнда меньше значения правого операнда, то условие становится истинным. | (а | |
> = | Если значение левого операнда больше или равно значению правого операнда, то условие становится истинным. | (а >= б) не верно. |
Если значение левого операнда меньше или равно значению правого операнда, то условие становится истинным. | (а |
# Сравнение строк
Основное правило сравнения помогает избежать и/или исправить наиболее частые ошибки:
Обязательное совпадение типов
Тип сравниваемых значений всегда должен быть одинаковый!
Операторы сравнения строк
Оператор | Синтаксис | Вывод |
---|---|---|
Если значения и равны, то условие становится истинным: . | ||
Если значения и не равны, то условие становится истинным: . | ||
Если значение больше, чем значение , то условие становится истинным: . | ||
Если значение меньше значения , тогда условие становится истинным: . | ||
Если значение больше или равно значения , то условие становится истинным: . | ||
Если значение меньше или равно значения , то условие становится истинным: . | ||
Принимает значение , если находит подстроку в строке , и в противном случае. | ||
Принимает значение , если НЕ находит подстроку в строке , и в противном случае. |
Простые логические выражения
Сравнение строк происходить не столь очевидным способом как числа. Для примера предлагаю подумать над следующими выражениями:
123456789
Правила сравнения строк:
- Сравнения строк, т.е. символов содержащихся в кавычках (даже если это цифры), происходит посимвольно.
- Каждый символ закодирован цифровым порядковым номером, и чем выше номер символа, тем он больше, причем для разных букв (заглавных или строчных, русских или английских) разные порядковые номера.
- Если начальные символы совпадают, то сравнение происходит по следующему символу.
Проверку по-символьно происходит следующим образом:
- берется первый символ каждой строки, сравнивается, если символы не равны вычисляется результат или . Иначе сравнение переключается к следующему символу.
- берется следующий символ каждой строки, сравнивается, если символы не равны вычисляется результат или . Иначе происходит сравнение по следующему символу.
- Если в одной строке ещё остались символы, а в другой закончились, то будет произведено сравнение символа с пустотой. Любой символ больше пустоты, и даже пробел больше пустоты. Результатом будет или в зависимости от оператора сравнения.
Пошаговое выполнение логического выражения можно представить следующим образом:
12345
Для общего ознакомления с некоторым объемом символов можно запустить следующий код:
123
Результат выполнения будет примерно следующим, троеточием заменены не которые малопонятные символы:
123
Данный пример вывода необходим для понимания сравнения строк посимвольно.
Представим числовую ось например от -20 до 20. Мы понимаем, что одно число больше другого, потому что оно расположено правее от числа, с которым сравнивается. И число меньше, если стоит левее числа с которым оно сравнивается.
Если выведенную последовательность символом представить как числовую ось, то вес символа будет определяться по правилу: чем правее символ находится тем больше он весит.
Для примера можно запустить следующий код и осознать правильность его выполнения:
12345678
Данный пример кода специально приведен с результатом , для простоты понимания.
Для наглядности веса символа и его отображения можно запустить следующий код:
12345
Результат выполнения будет следующим:
12345678910111213
Вывод до 1105 символа.
Быстрый алгоритм Евклида
Но у этого
алгоритма есть один существенный недостаток: если мы введем два вот таких
числа:
100000000 и 2
то этот алгоритм
начнет довольно долго работать и понятно почему, здесь мы получим большое
количество вычитаний 2. Эти вычитания будут происходить до тех пор, пока двойка
укладывается в оставшееся число. И мы здесь без всяких вычитаний сразу можем
сказать, что на последнем шаге будет вот такая операция:
4-2 = 2
После чего оба
числа станут равными и НОД будет равен двум. Так вот, чтобы без лишних операций
сразу определить на сколько будут отличаться два числа после серии вычитаний,
достаточно взять целый остаток от деления. Например:
100000000 % 2 =
0
Это значит, что
большее число можно полностью составить из суммы двоек. Следовательно, они оба
делятся на два нацело и их НОД равен 2. Хорошо, а если вместо 2 взять 3. В этом
случае имеем:
100000000 % 3 =
1
и далее уже
можно рассматривать два числа: 3 и 1. Причем, для них также можно выполнить
такую же операцию:
3 % 1 = 1
1 % 1 = 0
Все, получили
НОД, равный 1. И смотрите, здесь на каждой итерации большее число делится на
меньшее. Поэтому быстрый алгоритм Евклида можно записать так:
пока меньшее число больше 0
большему числу присваиваем остаток от деления на меньшее число
выводим большее число
Реализуем этот алгоритм. И договоримся, что большее число будем хранить в a, меньшее – в b.
a = int(input("Введите 1-е натуральное число: ")) b = int(input("Введите 2-е натуральное число: ")) sa = a; sb = b b = min(sa, sb) a = max(sa, sb) while b: a,b = b, a%b print("НОД(%d, %d) = %d"%(sa,sb,a))
В этом алгоритме
используется свойство:
a%b = c, c < b
то есть, остаток
всегда будет меньше числа b. Значит, из двух чисел c и b большим будет b, а меньшим – c. Именно поэтому
в программе записано такое множественное присваивание:
a,b = b, a%b
Мы здесь переменной a
присваиваем
значение b, а b
становится
равным остатку от деления. Это гарантируется, что a
>=
b.
Видео по теме
Python 3 #1: установка и запуск интерпретатора языка
Python 3 #2: переменные, оператор присваивания, типы данных
Python 3 #3: функции input и print ввода/вывода
Python 3 #4: арифметические операторы: сложение, вычитание, умножение, деление, степень
Python 3 #5: условный оператор if, составные условия с and, or, not
Python 3 #6: операторы циклов while и for, операторы break и continue
Python 3 #7: строки — сравнения, срезы строк, базовые функции str, len, ord, in
Python 3 #8: методы строк — upper, split, join, find, strip, isalpha, isdigit и другие
Python 3 #9: списки list и функции len, min, max, sum, sorted
Python 3 #10: списки — срезы и методы: append, insert, pop, sort, index, count, reverse, clear
Python 3 #11: списки — инструмент list comprehensions, сортировка методом выбора
Python 3 #12: словарь, методы словарей: len, clear, get, setdefault, pop
Python 3 #13: кортежи (tuple) и операции с ними: len, del, count, index
Python 3 #14: функции (def) — объявление и вызов
Python 3 #15: делаем «Сапер», проектирование программ «сверху-вниз»
Python 3 #16: рекурсивные и лямбда-функции, функции с произвольным числом аргументов
Python 3 #17: алгоритм Евклида, принцип тестирования программ
Python 3 #18: области видимости переменных — global, nonlocal
Python 3 #19: множества (set) и операции над ними: вычитание, пересечение, объединение, сравнение
Python 3 #20: итераторы, выражения-генераторы, функции-генераторы, оператор yield
Python 3 #21: функции map, filter, zip
Python 3 #22: сортировка sort() и sorted(), сортировка по ключам
Python 3 #23: обработка исключений: try, except, finally, else
Python 3 #24: файлы — чтение и запись: open, read, write, seek, readline, dump, load, pickle
Python 3 #25: форматирование строк: метод format и F-строки
Python 3 #26: создание и импорт модулей — import, from, as, dir, reload
Python 3 #27: пакеты (package) — создание, импорт, установка (менеджер pip)
Python 3 #28: декораторы функций и замыкания
Python 3 #29: установка и порядок работы в PyCharm
Python 3 #30: функция enumerate, примеры использования
Списки, кортежи, множества и словари
Списки, кортежи, множества и словари – еще 4 типа данных в Питоне, включающие в себя несколько значений и являющиеся итерируемыми (перебираемыми, как строки).
Особенности показаны в таблице 3.
Список (list) | Кортеж (tuple) | Множество (set) | Словарь (dict) |
Изменяемый | Неизменяемый | Изменяемое | Изменяемый |
Значения могут дублироваться | Значения могут дублироваться | Значения не могут дублироваться | Ключи не могут дублироваться |
Доступ по индексу возможен | Доступ по индексу возможен | Доступ по индексу невозможен | Есть доступ к ключам и значениям |
Таблица 3 – Коллекции данных в Python
Список – последовательность произвольных элементов, разделенных запятой. Обозначается квадратными скобками. Можно доставать отдельные составляющие через индекс, добавить в начало списка или конец те или иные значения, удалить элементы, узнать длину, отсортировать.
Рассмотрим часть функционала.
Результат работы скрипта:
Когда необходимо запретить изменение коллекции, ее удобно представлять в виде кортежа. Более того, он занимает меньшее количество в памяти. Записывается в круглых скобках.
На их основании также возможны срезы, доступ по индексу, нахождение максимума или минимума (если элементы представлены числами), поиск количества вхождений значений.
Результат работы скрипта:
Множества хороши в ситуациях, когда нужна гарантия уникальности всех элементов. Задаются фигурными скобками. При добавлении дубликата размер сета никак не меняется
Важно и то, что порядок объектов внутри множества не гарантирован, что исключает доступ по индексу
Результат работы скрипта:
Словарь – особый тип коллекций. Все его элементы состоят из пар «ключ: значение». Ключ должен быть уникальным, а значения могут повторяться. Обозначается фигурными скобками.
Рассмотрим некоторые операции со словарями.
Результат работы скрипта:
Таким образом, в зависимости от ситуации применяется тот или иной тип коллекций. Чаще всего это списки и словари.
Установка и подготовка среды
Чтобы начать программировать на Питоне, требуется совершить 2 шага:
- Установить последний релиз Python (скачивается с официального сайта https://www.python.org/downloads/);
- Загрузить программу для разработки (для новичков лучше всего подойдет PyCharm версии Community – https://www.jetbrains.com/ru-ru/pycharm/download/).
В нашем бесплатном руководстве по Python мы будем пользоваться только этим функционалом. Его достаточно, чтобы самому дома с нуля разобраться в Питоне.
Чтобы создать свой первый проект запускаем PyCharm и выбираем меню File -> New Project. Проверяем, чтобы в поле Base Interpreter стояла самая новая версия Питона.
Теперь в папке проекта можно создать файл с расширением «.py», в котором и будет писаться код. Чтобы запустить скрипт, нажимаем либо зеленую кнопку «Run», либо выбираем ее же через правую кнопку мыши. Внизу PyCharm при этом откроется окно консоли, отражающее итог и ход работы программы.
Таким образом, схема работы достаточно проста: пишем код, запускаем его, смотрим в терминал результат.
Чтобы проверить, что все установлено успешно и вы не напутали ничего в настройках, идем в панель терминала (внизу) и пишем там команду «python -V». Она отобразит версию Python, которая была проинсталлирована на компьютер.
В случае, если операционная система отличается от Windows, то команда будет выглядеть так: «python3 -V» (это связано с тем, что в UNIX-подобных ядрах по умолчанию включена более старая версия языка – 2.7. Так как она больше не поддерживается, рекомендуется работать с третьей – 3.9 или выше).
Операторы:
Самое первое и самое главное что нужно знать, так это операторы, для сравнения и логические.
Python 3 операторы сравнения:
Операторов сравнения в Python 3 не так много, как в других языках программирования, так как нет строгого сравнивания, том уже по умолчанию строгое сравнение, вот они все:
Python
1 2 3 4 5 6 7 8 9 10 |
a=10; b=3; c=a>b# a больше b, c будет равен true c=a<b# a меньше b, c будет равен false c=a>=b# a больше или равно b, c будет равен true c=a<=b# a меньше или равно b, c будет равен false c=a==b# a равно b, c будет равен false c=a!=b# a не равно b, c будет равен true c=a<>b# аналог != |
Как видите тут всё по стандарту, единственное есть ещё оператор который полный аналог оператора (Не равно), в остальном тут всё понятно.
Python 3 логические операторы:
Логические операторы в Python 3 пишутся словами, а не как в других языках программирования:
Python
1 2 3 4 5 6 |
a=True b=False c=aandb# Логическое и, возвращает True, если два значение равно True, c равно False c=aorb# Логическое или, возвращает True, если хотя бы одно значение равно True, c равно True c=nota# Логическое не, просто отзеркаливает значение, c равно False |
Тоже не чего сложного тут нет, всё понятно и просто, я думаю вы поняли, единенное оператор возвращает противоположное значение, то есть если значение логического выражения равно , то используя not на нём, оно будет равен .
Где используется Python и почему
В последние 5 лет Питон непрерывно находится в тройке самых популярных языков программирования. У него есть ряд сильных сторон, которые привлекают разработчиков со всего мира.
К типичным областям использования Python относят:
- Веб-разработка (сайты любой сложности и функциональности без проблем создаются при помощи данного языка);
- Работа с базами данных (можно работать как с «встроенной» sqlite3, так и любыми другими – реляционными и нереляционными);
- Графические приложения (реально не просто писать исполняемые скрипты, но и разрабатывать полноценные графические интерфейсы под свои нужды);
- Научные задачи (сложные вычисления, машинное обучение, нейронные сети);
- Сетевое программирование (включает не только взаимодействие с сайтами, но и почтовыми сервисами, JSON-объектами, Интернет-протоколами);
- Бизнес-приложения и игровая индустрия (ERP-системы, непрерывная разработка и тестирование, простые игры).
Озвученный спектр направлений показывает, что Питон имеет определенные преимущества по сравнению с другими языками, раз он пригоден для такого широкого класса задач.
Основные показаны ниже (рис. 1).
Сильные стороны языка Python
Простота подразумевает легкость освоения и высокий уровень абстракции (минимум кода при максимальном эффекте).
Выразительность связана с минимальным количеством кода для достижения результата (некоторые особенности Питона сокращают объем кода чуть ли не до одной строки, если сравнивать с другими языками).
Скрипты на Python’e легко читать: нет лишних символов, нагромождения скобок, дополнительных уточнений.
Полнота демонстрирует масштаб встроенных и сторонних библиотек под специфичные нужды (не нужно с нуля создавать функционал, ведь его уже кто-то реализовал).
Немаловажно и то, что исходный код Python свободно распространяется. Любая редакция языка доступна каждому как для личных, так и коммерческих нужд
Кроссплатформенность в дополнение ко всему гарантирует достижение идентичных результатов что на Windows, Linux, MacOS, так и на мобильных системах.
Отметим, также, ключевые плюсы и минуса Питона (таблица 1).
Плюсы | Минусы |
Легко изучать, писать и читать код | Относительно медленный |
Интерпретируемый (исполняет код на лету) | Не всегда эффективно расходует память |
Динамически типизированный | Ограничен в мобильной разработке |
С открытым исходным кодом | При исполнении могут возникать ошибки, что требует тщательного тестирования |
Имеет широкую поддержку |
Таблица 1 – Сильные и слабые стороны Python’a
Логические операторы
Для сравнения значений используется три логических оператора, которые сводят результат к логическому значению True или False.
Логические операторы обычно используются для оценки двух или больше выражений. Например, их можно использовать в программе, которая проверит:
- сдал ли студент экзамен
-
и
зарегистрирован ли он.
Если оба значения истинны, студент будет переведён на следующий курс.
Другой пример: программа с логическими операторами может проверять активность пользователя в онлайн-магазине:
- использовал ли он кредит магазина
-
или
заказывал ли он товары в течение последних 6 месяцев.
Для примера попробуйте сравнить три выражения:
print((9 > 7) and (2 # Оба выражения истинны (True)
print((8 == 8) or (6 != 6)) # Одно из выражений истинно (True)
print(not(3 # Выражение ложно (False)
True
True
True
В первом случае оба выражения истинны, потому оператор and возвращает True.
Во втором случае истинно только значение 8 == 8. Поскольку хотя бы одно из предложенных условий истинно, оператор or возвращает True. Оператор and в таком случае выдал бы False.
В третьем случае выражение 3
Теперь попробуйте сравнить числа с плавающей точкой.
print((-0.2 > 1.4) and (0.8 # Одно из выражений ложно (False)
print((7.5 == 8.9) or (9.2 != 9.2)) # Оба выражения ложны (False)
print(not(-5.7 # Выражение истинно (True)
- Поскольку в первом примере одно из выражений ложно, and вернёт False. Оператор and оценивает выражение как истинное только тогда, когда оба компонента истинны.
- Поскольку оба выражения ложны, оператор or выдаст False.
- Поскольку выражение истинно, оператор not вернёт False (not True = False).
Примечание
: Если вы не понимаете, как это работает, вам помогут разобраться таблицы истинности. Эту тему мы рассмотрим далее в этом руководстве.
Логические операторы можно объединять в составные выражения:
not((-0.2 > 1.4) and ((0.8
Выражение (0.8
Полученное значение True становится компонентом следующего выражения: (-0.2 > 1.4) and (True). Оператор and выдаст False, потому что выражение -0.2 > 1.4 ложно. (False) and (True) = False.
Сравнение
Операторы в Python используется для сравнения переменных. Кроме стандартных, известных из математических задач, существует проверка по значению и по типу, а также проверка неравенства.
Операции сравнения осуществляются в виде a x b, где x — это оператор сравнения.
В программировании оператор “=” работает не так, как в математике. Соответствие значений каждого аргумента определяется оператором “==”, но “=” только присваивает значение. С помощью!= проверяется неравенство переменных. Этот оператор можно заменить как “”, что не является стандартным оператором в других языках, как Си, Джава или Джаваскрипт.
Битовые операторы в Python
Побитовые операторы работают над битами и выполняют операции бит за битом. Допустим, если а = 60; и б = 13; В настоящее время в двоичном формате они будут выглядить следующим образом:
—————–
а&б = 0000 1100
а|б = 0011 1101
а^б = 0011 0001
Встроенная функция bin() в Python может быть использована для получения двоичного представления целого числа.
Следующие Битовые операторы поддерживаются языком Python:
Оператор | Описание | Пример |
---|---|---|
& бинарный И | копии оператора бита, в результате, если они существует в обоих операндах | (а & б) (0000 означает 1100) |
| бинарный ИЛИ | копирует бит, если он существует в любом из операндов. | (а | б) = 61 (означает 0011 1101) |
^ бинарный Исключающий или | копирует бит, если он установлен в одном операнде, но не в обоих. | (а ^ б) = 49 (означает 0011 0001) |
~ Бинарным комплемент | Это унарное и имеет эффект бит «листать». | (~ а) = -61 (в форме означает двойной комплемент 1100 0011 из-за подписанного двоичного числа. |
Значение левого операнда перемещается влево на число битов, заданное правым операндом. | а | |
>> Двоичный сдвиг вправо | Значение левого операнда перемещается вправо на число битов, заданное правым операндом. | а >> = 15 (0000 означает 1111) |
Numpy invert для отрицания логического значения
Numpy-одна из самых популярных библиотек в python. Он может быть использован для научных и числовых вычислений, что позволяет гораздо эффективнее работать с многомерными массивами. Массивы numpy – это плотно упакованные массивы href=”https://en.wikipedia.org/wiki/Homogeneous_function”>однородный тип. href=”https://en.wikipedia.org/wiki/Homogeneous_function”>однородный тип.
Функция Numpy.invert() используется для опроса битовой инверсии массива по элементам. Он вычисляет побитовое НЕ лежащее в основе двоичного представления логического значения из входных массивов.
Давайте посмотрим, как numpy array и numpy.invert работают вместе и отрицают логическое значение в Python на примере.
Арифметические операторы Python
Пайтон предоставляет огромное количество библиотек для решения вычислительных задач. Большой набор методов ставит Python на один уровень с Matlab и Octave. Арифметические операции применяются относительно к целым числам типа int, вещественным типа float, комплексным complex.
Если в качестве аргументов операции используются только целые числа, результат тоже будет целым. Операции между числами с плавающей точкой в результате дадут целое и дробное. Единственная операция, при которой взаимодействие целых чисел дает дробное, — это деление.
Все возможные арифметические операции приведены в таблице.
Добавление одного числа к другому выполняет оператор additional. Вычитание осуществляется с помощью subtraction. Умножение одного числа на другое происходит с multiplication. Возведение в степень осуществляется с помощью exponenta. Для деления используется division.
Оператор modulus (%) возвращает остаток от деления левого операнда на правый. Если переменная a = 10, переменная b = 20, то b%a == 0. Что такое оператор деления с остатком, легко понять на следующем примере. Если 9/2 == 4.5, то 9//2 возвращает результат, равный 4. Деление с floor division (//) возвращает целое число от операции деления левого операнда на правый.
Выполнение любых операций осуществляется непосредственно самими числами или перемеными, которым присвоены числовые значения. Результатом может являться другая переменная либо одна из существующих.
Наряду с целыми и вещественными числами в Python существуют комплексные числа. Они состоят из действительной и мнимой части. Записываются в виде c = a+bj, где а — действительная часть,
C.real()
#a
b — мнимая.
C.imag()
#b
Арифметические операции c комплексными числами имеют те же свойства, что и с вещественными. Использование complex numbers можно представить на плоскости с прямоугольной системой координат. Точка a пересечения оси X и оси Y соответствует комплексному числу x + yi. Таким образом, на оси X располагаются вещественные числа, а на вертикальной оси Y — мнимые.
Изучаем Python: куда дальше?
Чтобы быстро усвоить азы Питона, предоставленного в уроке материала достаточно. Конечно, этого мало, дабы стать специалистом. Поэтому придется самостоятельно дома или при помощи дополнительных курсов углублять знания. Выбор за вами, но некоторые рекомендации мы дадим.
Какие темы освоить в первую очередь? Приводим список тем и команд для новичков:
- типы данных в Python;
- необязательные и ключевые аргументы функций (*args, **kwargs), лямбда-выражения (lambda);
- объекты и классы, инициализация;
- основные встроенные модули (functools, math, string, sys, os, collections, time);
- генераторы и итераторы (yield, iter);
- работа с разными файлами (csv, изображения, текст);
- исключения и ошибки (exceptions);
- списковые включения (list comprehension);
- работа с сетью (requests, BeautifulSoup).
В дополнительных источниках ниже приведен перечень книг и сайтов, которые помогут вам в дальнейшем развитии. Если будут трудности, можно вообще начинать с литературы, где в заголовках встречаются фразы «для детей», «для школьников», «для чайников».
Потом стоит переходить к серьезным трудам (типа М. Лутца), ознакомлению с популярными фреймворками и библиотеками (Django, flask, pandas).
# Сложные логические выражения
Логические выражения типа являются простыми, так как в них выполняется только одна логическая операция. Однако, на практике нередко возникает необходимость в более сложных выражениях. Может понадобиться получить ответ «Да» или «Нет» в зависимости от результата выполнения двух простых выражений. Например, «на улице идет снег или дождь», «переменная больше 12 и меньше 20».
В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения. Широко используются два оператора – так называемые логические И (and) и ИЛИ (or).
Чтобы получить при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет , то и все сложное выражение будет ложным.
Чтобы получить при использовании оператора , необходимо, чтобы результат хотя бы одного простого выражения, входящего в состав сложного, был истинным. В случае оператора сложное выражение становится ложным лишь тогда, когда ложны оба составляющие его простые выражения.
Допустим, переменной x было присвоено значение 8 (x = 8), переменной y присвоили 13 (y = 13). Логическое выражение and будет выполняться следующим образом. Сначала выполнится выражение . Его результатом будет . Затем выполнится выражение . Его результатом будет . Далее выражение сведется к and , что вернет .
123
Если бы мы записали выражение так: and , то оно также вернуло бы False. Однако сравнение не выполнялось бы интерпретатором, так как его незачем выполнять. Ведь первое простое логическое выражение уже вернуло , которая, в случае оператора , превращает все выражение в .
В случае с оператором второе простое выражение проверяется, если первое вернуло , и не проверяется, если уже первое вернуло
Так как для истинности всего выражения достаточно единственного , неважно по какую сторону от оно стоит
1
Работа с файлами
После закрытия программы или по окончании работы скрипта все данные, которые мы получили, исчезают. Иногда, впрочем, нам нужно, чтобы они куда-то сохранились. Python предоставляет возможности для работы с файлами, как для их чтения, так и записи.
Попробуем сгенерировать 10 случайных целых чисел от 1 до 100 и записать их в текстовый файл «random.txt», а затем выведем их на печать в консоль из этого документа.
Нам понадобится контекстный менеджер with и функция open, а также знакомая функция print, которая умеет заносить данные в файл.
Познакомимся с двумя режимами работы open: «r» — чтение, «w» – запись.
Итак, контекстный менеджер with автоматически закрывает файл после своей работы (чтобы он не оставался в памяти).
В функцию open хорошей практикой считается не только передача названия файла и режима работы, но и кодировки (чтобы при записи букв российского алфавита, например, мы не получили кракозябры).
Функция print может принимать дополнительный аргумент file, в котором указывается файл на запись.