Это старая версия документа!
Консольные скрипты хранятся с расширением .py, графические .pyw.
Стандартная кодировка для файлов UTF-8 без BOM, если файл в другой кодировке, то ее следует указать в первой (или второй) строке так:
#-*- coding: cp1251 -*-
В Unix системах, внутри скрипта следует указывать путь к интерпретатору (аналогично bash), #!/usr/bin/python
Несколько команд в одной строке можно разделять точкой с запятой, а в целом, ее использование не рекомендуется.
Комментарии однострочные, символом решетки, многострочный можно выделить тремя символами двойной кавычки (форматирование сохраняется)
по факту это будет строковая переменная, которая так же используется для документирования
print([<Объекты>] [, sep=' '] [, end='\n'] [, file=sys.stdout] [, flush=False])
В аргументе end можно указать пробел (end=« »), тогда после команды print() не будет перевода строки
print("""Str1 Str2 Str3""")
Так же, есть функция sys.stdout.write(), она не вставляет символ перевода строки в конце
Для ввода есть функция input(), она возвращает введенное значение в виде строки
MyVar= input("Input String: ")
Входные аргументы
Array= sys.argv[:] for n in Array: ...
Блок try: .. except
try: commands.. except EOFError: ActionsIsError
Все данные в языке представлены объектами. У каждого есть тип и значение.
Для доступа к объекту и есть переменные. При инициализации, в переменную сохраняется ссылка на объект (его адрес в памяти).
Не начинать с цифр, с подчеркиваний
Не пересекаться со встроенными функциями т.к. их можно переопределить
Чувствительны к регистру
Так же, последовательности и отображения, к последним относится словарь.
Они поддерживают итераторы, с помощью метода next() или функции next()
arr=[1,2] i= iter(arr) i.__next__() || next(i)
Но лучше всего делать перебор в цикле for
for i in arr: print(i+ " -", end=" ") # или dict d= {"one":1, "two":2, "three":3} for i in d: print(d[i])
После присваивания, в переменной сохраняется ссылка на объект а не сам объект
Несколько переменных могут ссылаться на один и тот же объект в памяти. Например при множественном присваивании изменяемых объектов (list/dict/bytearray) это происходит автоматически
на счет изменяемых объектов под вопросом
x,y,z= 1,2,3 # Разные объект (но интерпретатор для оптимизации может автоматом сделать один) x,y,z= [1,2,3] # Тут присвоили list и объект в памяти один, три ссылки на него x is y # Ссылается ли x на y sys.getrefcount([1,2,3]) # Кол-во ссылок на объект в памяти (удаляется при 0)
Так же работает позиционное присваивание. Если кол-во не совпадает будет ошибка, но если указать звездочку, то одна из переменных, автоматом станет списком
x,y= y,x # Так можно поменять местами значение переменных a,b,*c= 1,2,3,4,5
type(a) # Сообщение с указанием типа if(type(x)== int): # Целое число if isinstance(s, str): # Строка
int(7.5); int("0o71",8); int("A",16) # 7, 57, 10 float("Infinity"); float("-inf") # inf, -inf
del x del x,y
Стоит отменить:
Decimal(«3.0») + Decimal(«4.0»)
# Инверсия(~), И(&), ИЛИ(|), Исключающее ИЛИ(^), сдвиг влево/вправо(<</>>)
Конкатенация(+), повторение(*), проверка на вхождение(in), проверка на не вхождение(not in)
Комбинируется со всеми мат операторами.