Шпаргалка по языку Python
Python — это кроссплатформенный язык программирования. Это объектно-ориентированный язык с динамической типизацией, первоначально разработанный для написания автоматизированных скриптов (shell). С постоянным обновлением версий и добавлением новых функций языка он все чаще используется для разработки независимых крупномасштабных проектов.
Общие сведения
- Python чувствителен к регистру
- Индексация в Python начинается с 0
- Python использует пробелы (табуляцию или пробелы) для отступов кода вместо фигурных скобок.
Справка
| Главная страница справки | help() |
| Справка по функции | help(str.replace) |
| Справка по модулю | help(re) |
Модули (Библиотеки)
| Список содержимого модуля | dir(module1) |
| Загрузить модуль | import module1 * |
| Вызвать функцию из модуля | module1.func1() |
Инструкция import создает новое пространство имен и выполняет все инструкции в файле .py, связанном с этим пространством имен. Если вы хотите загрузить содержимое модуля в текущее пространство имен, используйте «from module1 import *».
Скалярные типы
Проверить тип данных: type(variable)
Целые числа
int/long — большие целые числа автоматически преобразуются в длинные целые числа
Числа с плавающей точкой
float — 64 бит, типа «double» не существует
Логические значения
bool — Истина (True) или Ложь (False)
Строки
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() также являются функциями явного приведения типов
Пустое значение
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 или 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] или list1 = list(tup1) |
| Объединить списки | list1 + list2 или 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]Словари (Hashes)
| Создать словарь | dict1 ={‘key1’ :‘value1’, 2 :[3, 2]} |
| Создать словарь с помощью функции отображения | dict(zip(keyList, valueList)) |
| Получить элемент | dict1[‘key1’] |
| Изменить/добавить элемент | dict1[‘key1’] = ’newValue’ |
| Получить значение, вернуть по умолчанию, если не существует | dict1.get(‘key1’, defaultValue) |
| Проверить наличие ключа | ‘key1’ in dict1 |
| Удалить элемент | del dict1[‘key1’] |
| Получить список ключей (Keys) | dict1.keys() |
| Получить список значений (Values) | dict1.values() |
| Обновить значения | dict1.update(dict2) # значения dict1 заменяются на значения из dict2 |
Множества (Sets)
Множество — это неупорядоченная коллекция уникальных элементов.
| Создать множество | set([3, 6, 3]) или {3, 6, 3} |
| Проверить, является ли set1 подмножеством set2 | set1.issubset(set2) |
| Проверить, является ли set2 подмножеством set1 | set1.issuperset(set2) |
| Проверить, идентичны ли множества | set1 == set2 |
| Объединение (или) | set1 |
| Пересечение (и) | 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, она не возвращает никакого значения.
- Возврат нескольких значений через объект кортежа
return (value1, value2) value1, value2 = func1(..) -
Анонимные функции (Lambda)
lambda x : x * 2 # def func1(x) : return x * 2
Часто используемые функции
-
Enumerate возвращает кортеж последовательности (key, val), где key — индекс текущего элемента.
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)))
Управление и поток
-
Операторы для условий «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.
Объектно-ориентированное программирование
-
‘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)Получение подстроки
start = 1
string1[start:8]Заполнение строки нулями
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('Сообщение об ошибке: ..')Генераторы списков, множеств и словарей (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]