Шпаргалка по языку Python
Python — это кроссплатформенный язык программирования. Это объектно-ориентированный язык с динамической типизацией, изначально разработанный для написания сценариев автоматизации (shell). С постоянным обновлением версий и добавлением новых языковых функций он все чаще используется для разработки независимых крупных проектов.
Общие положения
- Python чувствителен к регистру
- Индексация в Python начинается с 0
- Python использует пробелы (табуляцию или пробелы) для отступов в коде вместо фигурных скобок.
Справка (Help)
| Главная страница справки | help() |
| Справка по функциям | help(str.replace) |
| Справка по модулям | help(re) |
Модули (Библиотеки)
| Список содержимого модуля | dir(module1) |
| Загрузка модуля | import module1 * |
| Вызов функции из модуля | module1.func1() |
Инструкция import создает новое пространство имен и выполняет все инструкции в связанном файле .py внутри этого пространства имен. Если вы хотите загрузить содержимое модуля в текущее пространство имен, используйте «from module1 import *»
Скалярные типы
Проверка типа данных: type(variable)
Целые числа (Integers)
int/long — большие целые числа автоматически преобразуются в длинные целые числа (в Python 3 существует только int, который обрабатывает любые размеры).
Числа с плавающей запятой (Floats)
float — 64 бита, типа «double» не существует.
Логические значения (Booleans)
bool — Истина (True) или Ложь (False).
Строки (Strings)
str — Python 2.x по умолчанию: ASCII; Python 3: Unicode.
- Строки могут быть в одинарных/двойных/тройных кавычках.
- Строка — это последовательность символов, поэтому с ней можно обращаться как с любой другой последовательностью.
- Специальные символы можно представлять с помощью \ или «сырых» строк, начинающихся с r.
str1 = r'this\f?ff' - Форматирование строк можно реализовать несколькими способами.
template = '%.2f %s haha $%d' str1 = template % (4.88, 'hola', 2)
str(), bool(), int() и float() также являются функциями явного приведения типов.
Пустое значение (Null)
NoneType(None) — значение «null» в Python (существует только один экземпляр объекта None).
- None не является защищенным ключевым словом, а является уникальным экземпляром «NoneType».
- None — распространенное значение по умолчанию для необязательных параметров функций:
def func1(a, b, c = None) - Обычное использование None:
if variable is None :
Дата и время
datetime — встроенный модуль Python «datetime» предоставляет типы «datetime», «date», «time» и т. д.
- «datetime» объединяет информацию, хранящуюся в «date» и «time».
Создать объект datetime из строки dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’) Получить объект «date» dt1.date() Получить объект «time» dt1.time() Форматировать datetime в строку dt1.strftime(’%m/%d/%Y %H:%M’) Изменить значение поля dt2 = dt1.replace(minute = 0, second=30) Получить разницу diff = dt1 - dt2 # diff — это объект «datetime.timedelta»
Структуры данных
Кортежи (Tuples)
Кортеж — это неизменяемая последовательность фиксированной длины.
| Создать кортеж | tup1=4,5,6 or tup1 = (6,7,8) |
| Создать вложенный кортеж | tup1 = (4,5,6), (7,8) |
| Преобразовать последовательность или итератор в кортеж | tuple([1, 0, 2]) |
| Соединить кортежи | tup1 + tup2 |
| Распаковать кортеж | a, b, c = tup1 |
| Поменять переменные местами | b, a = a, b |
Списки (Lists)
Список — это изменяемая последовательность переменной длины.
| Создать список | list1 = [1, ‘a’, 3] or list1 = list(tup1) |
| Соединить списки | list1 + list2 or list1.extend(list2) |
| Добавить в список | list1.append(‘b’) |
| Вставить в определенную позицию | list1.insert(posIdx, ‘b’) |
| Удалить по индексу | valueAtIdx = list1.pop(posIdx) |
| Удалить первое вхождение значения | list1.remove(‘a’) |
| Проверить наличие значения в списке | 3 in list1 => True |
| Сортировать список | list1.sort() |
| Сортировать с пользовательской функцией | list1.sort(key = len) # сортировка по длине |
Примечание:
- «Начальный» индекс (start) включен, а «конечный» (stop) — нет.
- start/stop можно опустить, по умолчанию это начало/конец.
Слайсирование (Slicing)
Типы последовательностей включают «str», «array», «tuple», «list» и т. д.
list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]Словари (Hash)
| Создать словарь | dict1 ={‘key1’ :‘value1’, 2 :[3, 2]} |
| Построение словаря через функцию zip | dict(zip(keyList, valueList)) |
| Получить элемент | dict1[‘key1’] |
| Изменить/добавить элемент | dict1[‘key1’] = ’newValue’ |
| Получить значение, иначе вернуть значение по умолчанию | dict1.get(‘key1’, defaultValue) |
| Проверить наличие ключа | ‘key1’ in dict1 |
| Удалить элемент | del dict1[‘key1’] |
| Получить список ключей | dict1.keys() |
| Получить список значений | dict1.values() |
| Обновить значения | dict1.update(dict2) # значения dict1 заменяются значениями из dict2 |
Множества (Sets)
Множество — это неупорядоченная коллекция уникальных элементов.
| Создать множество | set([3, 6, 3]) or {3, 6, 3} |
| Проверить, является ли подмножеством | set1.issubset(set2) |
| Проверить, является ли надмножеством | set1.issuperset(set2) |
| Проверить равенство множеств | set1 == set2 |
| Объединение (or) | set1 |
| Пересечение (and) | set1 & set2 |
| Разность множеств | set1 - set2 |
| Симметрическая разность (xor) | set1 ^ set2 |
Функции
-
Основная форма
def func1(posArg1, keywordArg1 = 1, ..): -
Обычное использование концепции «функции — это объекты»:
def func1(ops = [str.strip, user_define_func, ..], ..): for function in ops: value = function(value) -
Возвращаемые значения
- Если в конце функции нет инструкции return, она ничего не возвращает (None).
- Возврат нескольких значений через объект кортежа.
return (value1, value2) value1, value2 = func1(..) -
Анонимные функции (Lambda)
lambda x : x * 2 # эквивалент: # def func1(x) : return x * 2
Часто используемые функции
-
Enumerate: возвращает последовательность кортежей (ключ, значение), где ключ — это индекс текущего элемента.
for key, val in enumerate(collection): -
Sorted: выполняет операцию сортировки любых итерируемых объектов.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: упаковывает соответствующие элементы объектов в кортежи и возвращает список из этих кортежей.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: возвращает обратный итератор.
list(reversed(range(10)))
Управление потоком (Control Flow)
-
Операторы условий «if else»:
Проверить, являются ли две переменные одним и тем же объектом var1 is var2 Проверить, являются ли две переменные разными объектами var1 is not var2 Проверить, имеют ли две переменные одинаковое значение var1 == var2 -
Обычное использование оператора for:
for element in iterator : -
«pass» — ничего не делает, обычно используется в качестве заполнителя.
-
Тернарное выражение
value = true-expr if condition else false-expr -
Инструкции switch/case отсутствуют, используется if/elif.
Объектно-ориентированное программирование (OOP)
-
«object» является основой для всех типов Python.
-
Все (числа, строки, функции, классы, модули и т. д.) является объектом, и у каждого объекта есть свой «type». Объектные переменные — это указатели на их расположение в памяти.
-
Основная форма объекта
class MyObject(object): # «self» эквивалентно «this» в Java/C++ def __init__(self, name): self.name = name def memberFunc1(self, arg1): .. @staticmethod def classFunc2(arg1): .. obj1 = MyObject('name1') obj1.memberFunc1('a') MyObject.classFunc2('b') -
Интерактивные инструменты:
dir(variable1) # Вывести список всех доступных методов объекта
Операции со строками
Соединение списка/кортежа с помощью разделителя:
', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'Форматирование строки:
string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')Разбиение строки:
sep = '-'
stringList1 = string1.split(sep)Получение подстроки (slice):
start = 1
string1[start:8]Заполнение строки нулями (z-fill):
month = '5'
month.zfill(2) => '05'
month = '12'
month.zfill(2) => '12'Обработка исключений
- Основная форма
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- Ручная установка исключения
raise AssertionError # ошибка утверждения
raise SystemExit # запрос на выход из программы
raise RuntimeError('Error message :..')Списковые, множественные и словарные включения (Comprehensions)
«Синтаксический сахар», делающий код более легким для чтения и написания.
-
Списковые включения (List Comprehension):
Лаконичное формирование нового списка путем фильтрации элементов коллекции и преобразования элементов, прошедших фильтр.
Основная форма:
[expr for val in collection if condition]Краткая форма для:
result = [] for val in collection: if condition: result.append(expr) -
Словарные включения (Dictionary Comprehension):
{key-expr : value-expr for value in collection if condition} -
Множественные включения (Set Comprehension): Аналогично списковым включениям, только используются {} вместо [].
-
Вложенные списковые включения:
Основная форма:
[expr for val in collection for innerVal in val if condition]