Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Система типов в Python

Система типов в Python

Александр Хаёров (Ingram Micro) @ Python Junior Meetup №1

"Типизация — важный аспект, который зачастую характеризует тот или иной язык программирования, наделяя его разными свойствами. В докладе будут рассмотрена общая информация о типизации, ее роли. Узнаем подробно какая типизация в Python и как использовать для написания лучшего кода".

Moscow Python Meetup
PRO

February 09, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Types&Python

    View Slide

  2. 㱺 Whoami
    Alex Hayorov @hayorov
    We

    View Slide

  3. О чем пойдет разговор
    система типов
    бестиповая типизация
    типовая типизация
    постепенная типизация в Python

    View Slide

  4. View Slide

  5. выражения и
    операторы
    литералы и

    переменные
    типы данных
    a=b*2
    1+2 ???

    View Slide

  6. ++++++++++[>+++++
    +<<<++.>+.++++
    ++++++++.>.+++.-----
    Бестиповая
    типизация
    все сущности - последовательности бит
    низкоуровневые языки: assembler, forth и brainf*ck, awk
    плюсы минусы
    полная свобода
    эффективный код
    сложно и неудобно
    легко ошибиться

    View Slide

  7. Типовая типизация
    статическая динамическая
    скорость выполнения
    интеграция с IDE
    обнаружение ошибок
    универсальные коллекции
    обобщенные алгоритмы
    легкость в освоении

    View Slide

  8. строгая (сильная) нестрогая (слабая)
    надежность
    скорость
    определенность
    удобство
    сосредоточение на задаче
    краткость записи
    ограниченное неявное преобразовани

    View Slide

  9. явная неявная
    краткость записи
    -- Явное указание типа
    add :: (Integer, Integer) -> Integer
    add (x, y) = x + y
    -- Без явного указания типа
    add (x, y) = x + y
    устойчивость к
    изменениям
    понятная запись
    не нужно запоминать тип
    выборочная явная типизация

    View Slide

  10. динамическая
    строгая
    неявная

    View Slide

  11. def fib(n: int) -> Iterator[int]:
    a, b = 0, 1
    while a < n:
    yield a
    a, b = b, a+b
    def fib(n):
    a, b = 0, 1
    while a < n:
    yield a
    a, b = b, a+b
    PEP 484 -- Type Hints
    MYPY checker
    Stubs (statically typed interface definitions)

    View Slide

  12. View Slide