Skip to content

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

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

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

    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)))

Управление и поток

  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.

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

  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)

Получение подстроки

start = 1
string1[start:8]

Заполнение строки нулями

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('Сообщение об ошибке: ..')

Генераторы списков, множеств и словарей (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]