Skip to content

Шпаргалка по языку 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

Часто используемые функции

  1. Enumerate: возвращает последовательность кортежей (ключ, значение), где ключ — это индекс текущего элемента.

    for key, val in enumerate(collection):
  2. Sorted: выполняет операцию сортировки любых итерируемых объектов.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip: упаковывает соответствующие элементы объектов в кортежи и возвращает список из этих кортежей.

    zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..]
  4. Reversed: возвращает обратный итератор.

    list(reversed(range(10)))

Управление потоком (Control Flow)

  1. Операторы условий «if else»:

    Проверить, являются ли две переменные одним и тем же объектом var1 is var2
    Проверить, являются ли две переменные разными объектами var1 is not var2
    Проверить, имеют ли две переменные одинаковое значение var1 == var2
  2. Обычное использование оператора for:

    for element in iterator :
  3. «pass» — ничего не делает, обычно используется в качестве заполнителя.

  4. Тернарное выражение

    value = true-expr if condition else false-expr
  5. Инструкции switch/case отсутствуют, используется if/elif.

Объектно-ориентированное программирование (OOP)

  1. «object» является основой для всех типов Python.

  2. Все (числа, строки, функции, классы, модули и т. д.) является объектом, и у каждого объекта есть свой «type». Объектные переменные — это указатели на их расположение в памяти.

  3. Основная форма объекта

    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')
  4. Интерактивные инструменты:

    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'

Обработка исключений

  1. Основная форма
try:
    ..
except ValueError as e:
    print(e)
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. Ручная установка исключения
raise AssertionError # ошибка утверждения
raise SystemExit # запрос на выход из программы
raise RuntimeError('Error message :..')

Списковые, множественные и словарные включения (Comprehensions)

«Синтаксический сахар», делающий код более легким для чтения и написания.

  1. Списковые включения (List Comprehension):

    Лаконичное формирование нового списка путем фильтрации элементов коллекции и преобразования элементов, прошедших фильтр.

    Основная форма:

    [expr for val in collection if condition]

    Краткая форма для:

    result = []
    for val in collection:
        if condition:
            result.append(expr)
  2. Словарные включения (Dictionary Comprehension):

    {key-expr : value-expr for value in collection if condition}
  3. Множественные включения (Set Comprehension): Аналогично списковым включениям, только используются {} вместо [].

  4. Вложенные списковые включения:

    Основная форма:

    [expr for val in collection for innerVal in val if condition]