Полный текст философии 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
%
— остаток от деления нацело — аналог mod
divmod(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 для сохранения логов.