Полный текст философии Python доступен по команде:
import this
В отличие от девиза Perl 1), Python придерживается философии «должен существовать один — и, желательно, только один — очевидный способ сделать это».
Эквивалент null в Python: None
Проверка:
null_variable = None if null_variable is None: <действия>
На Python предпочтительный метод отступов — пробелы (4 шт.). Сочетание отступов пробелами и табуляцией — недопустимо! Лучше настроить IDE на автоматическую конвертацию.
Допустимо записывать одну инструкцию в нескольких строках. Достаточно ее заключить в пару круглых, квадратных или фигурных скобок.
print('aaaaa', 'bbbbb', 3) ## aaaaabbbbb3
Команда создания в каталоге проекта:
python3 -m venv virt.py3
Где virt.py3 — название окружения/создаваемого каталога.
Команда активации в каталоге проекта:
source ./virt.py3/bin/activate
Теперь, все установленные модули будут только в виртуальном окружении, а не в основной системе.
Установка:
python3 -m pip install module_name
Проверка установленных модулей:
pip list
Команда деактивации:
deactivate
Каждый импорт, как правило, должен быть на отдельной строке.
import os import sys as sys import datetime as dt import urllib.request as askurl
где sys, dt, askurl - новые имена
+ — сложение чисел/строк- — вычитание* — умножение числа или дублирование строки** — возведение в степеньpow(x,y[,z]) — $x^{y}$ по модулю (если модуль задан) = x**y % z/ — деление// — частное от деления нацело — аналог div% — остаток от деления нацело — аналог moddivmod(x, y) — Возвращает пару значений (x//y, x%y). div*y + mod == x.abs() — Модуль числа!= — проверяет неравенство значений двух объектов.== — проверяет равенство значений двух объектов.is — проверяет идентичность самих объектов, включая тип объекта (аналог === = — присвоение.:= — моржовый (walrus) оператор, появившийся в Python 3.8, дает возможность решить сразу две задачи: присвоить значение переменной и вернуть это значение.print(num := 15) # 15
Операторы сравнения в Питоне можно объединять в цепочки:
print(a == b == c); print(1 <= x <= 10);
Логические операторы: and, or, not.
round(x) — Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.round(x, n) — Округляет число x до n знаков после точки. Это стандартная функция.Основные типы переменных в Python: int, float, str.
bool() — из строки в Логическоеcomplex([real[, imag]]) — преобразование к комплексному числу.float() — из строки к числу с плавающей точкой.str([object], [кодировка], [ошибки]) — строковое представление объекта.int([object], [основание системы счисления]) — преобразование из строки к целому числу. По умолчанию система счисления десятичная. Округляет до целого.bin() — из целого числа в двоичную строку.oct() — из целого числа в восьмеричную строку.hex() — из целого числа в шестнадцатеричную строку.print(int(bin(125), 2)); # 125
range([start=0], stop, [step=1]) — арифметическая прогрессия от start до stop с шагом step.item[START:STOP:STEP] - берёт срез от номера START, до STOP (не включая его), с шагом STEP. По умолчанию START = 0, STOP = длине объекта, STEP = 1.a = [1, 3, 8, 7] print(a[1:]) # [3, 8, 7] print(a[::-1]) # [7, 8, 3, 1] s = 'str' print(s[1:]) # 'tr' print(s[::-1]) # 'rts'
input() — ввод, считывает одну строку целиком.print() — вывод, с переводом строкиprint(<строка>, sep=';', end='') — вывод, С заменой разделителя на «;» и БЕЗ перевода строкиn = input('input text') print('text:', n)
open(name [,mode [,bufsize [, encoding [, errors [, newline [, closefd]]]]]])
encoding — имя кодировки символов, например: ‘utf-8’ или ‘ascii’errors — политика обработки ошибок, связанных с кодировкой символовnewline — порядок работы в режиме поддержки универсального символа перевода строки и может принимать значения: None, ‘’, ‘\n’, ‘\r’ или ‘\r\n’newline имеет любое другое допустимое значение, оно будет использоваться для преобразования символов окончания строкиclosefd определяет, должен ли в действительности закрываться дескриптор файла при вызове метода close(). По умолчанию имеет значение True. mode | Действие: |
|---|---|
| ‘+’ | открытие на чтение и запись |
| ‘r’ | открытие на чтение (по умолчанию) |
| Виды записи: | |
| ‘w’ | открытие на запись, содержимое файла удаляется, если файла не существует, создается новый |
| ‘x’ | открытие на запись, если файла не существует, иначе исключение |
| ‘a’ | открытие на дозапись, информация добавляется в конец файла |
| Содержимое: | |
| ‘b’ | открытие в двоичном режиме |
| ‘t’ | открытие в текстовом режиме (по умолчанию) |
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close().
f = open('text.txt', 'rt') for line in f: print(line) f.close() # 'Hello world!\n' # '\n' # 'The end.\n' # '\n'
l = ['aa', 'bb', 'c\nc', 'd\td'] f = open('text.txt', 'wt') for i in l: f.write(i + '\n') f.close()
Для чего применяется конструкция with … as? Для гарантии того, что критические функции выполнятся в любом случае.
with open('newfile.txt', 'w', encoding='utf-8') as g: d = int(input()) print('1 / {} = {} '.format(d, 1 / d), file=g)
with open('newfile.txt', 'rt', encoding='utf-8') as fd: for line in fd: # Перебор строк print(line.strip()) # Убираем пробельные символы и переводы строк в начале и конце
И вы можете быть уверены, что файл будет закрыт вне зависимости от того, что введёт пользователь.
if (<условие>): <действие 1> <действие 2> ... <действие n>
if (<условие 1>): <действия> elif (<условие 2>): <действия> elif (<условие 3>): <действия> else <действия>
Аналогом (в C++):
x = (1>0)?1:0;
будет (на Python):
x = 1 if (1>0) else 0
Начиная с Python 3.10, можно использовать конструкцию match/case.
В более старых версиях — используйте конструкцию if-elif-…-elif-else.
continue — начинает следующую итерацию, минуя оставшееся тело цикла.break — досрочно прерывает цикл.else — примененное сразу после цикла, проверяет, был ли произведен выход из цикла инструкцией break, или же “естественным” образом. Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break.while True: <действия>
for i in 'список': <действия>
Цикл от 1 до 6 с шагом 2, с использованием range():
for i in range(1, 6, 2): print(i, end=''); ## 135
def add(x, y=0): return x + y
try: value = collection[key] except KeyError: return key_not_found(key) else: return handle_value(value)
Модуль math для вычислений.
Функции (int, round, abs, pow, divmod) являются стандартными и не требуют подключения модуля math для использования.
floor(x) — Округляет число вниз («пол»), при этом floor(1.5) == 1, floor(-1.5) == -2ceil(x) — Округляет число вверх («потолок»), при этом ceil(1.5) == 2, ceil(-1.5) == -1sqrt(x) — Квадратный корень. Использование: sqrt(x)log(x) — Натуральный логарифм. log(x, b) — Логарифм по основанию b.e — Основание натуральных логарифмов e = 2,71828…sin(x) — Синус угла, задаваемого в радианахcos(x) — Косинус угла, задаваемого в радианахtan(x) — Тангенс угла, задаваемого в радианахasin(x) — Арксинус, возвращает значение в радианахacos(x) — Арккосинус, возвращает значение в радианахatan(x) — Арктангенс, возвращает значение в радианахatan2(y, x) — Полярный угол (в радианах) точки с координатами (x, y).degrees(x) — Преобразует угол, заданный в радианах, в градусы.radians(x) — Преобразует угол, заданный в градусах, в радианы.pi — Константа π = 3.1415…
Модуль os для взаимодействия с операционной системой.
Модуль platform для получения информации о платформе (т.е. операционной системе).
Модуль sys содержит функциональность, характерную для системы. Так список sys.argv содержит аргументы командной строки.
Модуль logging для сохранения логов.