Лекция 2. Всё, что вы хотели знать о функциях в Python.Roman Brovko
Синтаксис объявления функций. Упаковка и распаковка аргументов. Ключевые аргументы и аргументы по умолчанию. Распаковка и оператор присваивания. Области видимости, правило LEGB, операторы global и nonlocal. Функциональное программирование, анонимные функции. Функции map, filter и zip. Генераторы списков, множеств и словарей. Немного о PEP 8.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
Два протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Модули threading, queue и concurrent.futures. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio. Модуль multiprocessing.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Roman Brovko
Синтаксис объявления функций. Упаковка и распаковка аргументов. Ключевые аргументы и аргументы по умолчанию. Распаковка и оператор присваивания. Области видимости, правило LEGB, операторы global и nonlocal. Функциональное программирование, анонимные функции. Функции map, filter и zip. Генераторы списков, множеств и словарей. Немного о PEP 8.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
Два протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Модули threading, queue и concurrent.futures. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio. Модуль multiprocessing.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Лекция 5. Встроенные коллекции и модуль collections.Roman Brovko
И снова встроенные коллекции: кортеж, список, множество, словарь - обход в глубину, обзор методов, примеры. Почти всё про модуль collections: именованные кортежи, счётчики, defaultdict, OrderedDict.
Лекция 4. Строки, байты, файлы и ввод/вывод.Roman Brovko
Строковые литералы и сырые строки. Строки и Юникод. Основные методы работы со строками. Модуль string. Байты. Кодировки. Файлы и файловые объекты. Методы работы с файлами. Модуль io
Лекция 7. Исключения и менеджеры контекста.Roman Brovko
Исключения, зачем они нужны и как их обрабатывать. Встроенные исключения и базовые классы BaseException и Exception. Операторы try...except..else..finally. Менеджеры контекста и модуль contextlib.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Докладчик:
Владимир Донец (kwimba.ru)
Описание: Слышали про магию в Python? Одно из магических заклинаний называется дескрипторы. Мощная фича языка, которая позволяет определять свое поведение атрибута объекта при доступе к этому атрибуту.
Сложно звучит? А вы знали, что дескрипторами уже наверняка пользовались, если хотя бы раз писали на Python. Я расскажу о том, что такое дескрипторы и как их осознанно можно применять в собственном коде.
При написании программы, разработчик примерно представляет себе, как должна работать его программа. Но не всегда его ожидания соответствуют действительности — приложения тормозят, потребляют много ресурсов и вообще ведут себя не так, как задумывалось, особенно под большой нагрузкой. В своём докладе я покажу, как заглянуть "под капот" ваших приложений на Python (и Django в частности): какие способы профилирования бывают и когда их можно использовать, расскажу об отладке приложений и различных инструментах, которые помогают разработчику при разработке.
Докладчик:
Александр Сапронов
Описание:
Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask, Toolz. Узнаем возможности каждой из библиотеки, а также как в динамическом язык имитировать мощную систему типов. Затронем характеристики функционального программирования и проверим помогают ли библиотеки выполнить.
Вводная лекция в язык C#, для тех кто знает программирование и в особенности C++. В статье будет уделено внимание наиболее важным отличиям языков, будут обсуждаться вопросы производительности и эффективного кода.
Другие интересные статьи по C# ищите тут: http://itw66.ru/blog/c_sharp/
Написание компактного и эффективного кода в C#: http://itw66.ru/blog/c_sharp/520.html
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Лекция 5. Встроенные коллекции и модуль collections.Roman Brovko
И снова встроенные коллекции: кортеж, список, множество, словарь - обход в глубину, обзор методов, примеры. Почти всё про модуль collections: именованные кортежи, счётчики, defaultdict, OrderedDict.
Лекция 4. Строки, байты, файлы и ввод/вывод.Roman Brovko
Строковые литералы и сырые строки. Строки и Юникод. Основные методы работы со строками. Модуль string. Байты. Кодировки. Файлы и файловые объекты. Методы работы с файлами. Модуль io
Лекция 7. Исключения и менеджеры контекста.Roman Brovko
Исключения, зачем они нужны и как их обрабатывать. Встроенные исключения и базовые классы BaseException и Exception. Операторы try...except..else..finally. Менеджеры контекста и модуль contextlib.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Докладчик:
Владимир Донец (kwimba.ru)
Описание: Слышали про магию в Python? Одно из магических заклинаний называется дескрипторы. Мощная фича языка, которая позволяет определять свое поведение атрибута объекта при доступе к этому атрибуту.
Сложно звучит? А вы знали, что дескрипторами уже наверняка пользовались, если хотя бы раз писали на Python. Я расскажу о том, что такое дескрипторы и как их осознанно можно применять в собственном коде.
При написании программы, разработчик примерно представляет себе, как должна работать его программа. Но не всегда его ожидания соответствуют действительности — приложения тормозят, потребляют много ресурсов и вообще ведут себя не так, как задумывалось, особенно под большой нагрузкой. В своём докладе я покажу, как заглянуть "под капот" ваших приложений на Python (и Django в частности): какие способы профилирования бывают и когда их можно использовать, расскажу об отладке приложений и различных инструментах, которые помогают разработчику при разработке.
Докладчик:
Александр Сапронов
Описание:
Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask, Toolz. Узнаем возможности каждой из библиотеки, а также как в динамическом язык имитировать мощную систему типов. Затронем характеристики функционального программирования и проверим помогают ли библиотеки выполнить.
Вводная лекция в язык C#, для тех кто знает программирование и в особенности C++. В статье будет уделено внимание наиболее важным отличиям языков, будут обсуждаться вопросы производительности и эффективного кода.
Другие интересные статьи по C# ищите тут: http://itw66.ru/blog/c_sharp/
Написание компактного и эффективного кода в C#: http://itw66.ru/blog/c_sharp/520.html
Видео: https://www.youtube.com/watch?v=IUtbbN9aevU
Веб-приложения становятся все больше и сложнее, так что многое остается вне нашего поля зрения. Поэтому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи решать, что необходимо для их создания.
SPA Meetup, 28 февраля 2015, Москва, Авито
Программирование как способ выражения мыслей. Levon Avakyan
Я расскажу на простейших примерах как функционирует современный компьютер, какие языки программирования бывают, для чего они используются, какие парадигмы лежат в их основе. По сути, язык программирования это инструмент, с помощью которого можно рассказать машине, чего же мы от неё хотим, тем самым воплотив свои мысли.
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
Язык C++ и инфраструктура вокруг него продолжает активно развиваться, что делает этот язык одним из самых эффективных инструментов в настоящее время. Хочется выделить три фактора, делающие язык C++ сейчас столь привлекательным. Первое: нововведения в стандарт языка, позволяющие писать эффективный код. Второе: зрелость инструментов разработки и увеличение скорости сборки проектов. Третье: зрелось вспомогательного инструментария, позволяющие контролировать качество кода и другие аспекты жизненного цикла проекта. Этот доклад - ода языку программирования C++!
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Yandex
Ужасы локализации и как с ними бороться на пошаговом примере: от «Эврика, нам нужно перевести проект на язык Х!» до «Как не прострелить себе ногу, когда у вас есть Xcode, разработчики, переводчики и дедлайн». Рассматриваются все базовые инструменты локализации (genstrings, ibtool) в целях понимания, как их использовать с наименьшими телодвижениями. Отдельно рассказывается про то, как мы подружили весь этот «зоопарк» в Яндексе и чем готовы поделиться.
2. Логистика курса
• n ≈ 10 лекций;
• n − 1 домашних заданий
• несколько задач, которые нужно решить на Python,
• решения можно сдавать в течение недели после лекции без
штрафа и в течение второй недели со штрафом 50%;
• каждая задача оценивается максимум 4 баллами: по два за
корректность и стилистику;
• n − 1 тестов
• несколько вопросов по материалам предыдущей лекции,
• полностью правильный тест оценивается 4 баллами.
1 / 37
3. Скучающий компьютерный ученый
«[…] in December 1989, I was looking for a “hobby” programming
project that would keep me occupied during the week around
Christmas. My office […] would be closed, but I had a home
computer, and not much else on my hands.»
Foreword for “Programming Python” (1st ed.)
2 / 37
4. Источники вдохновения
ABC
HOW TO RETURN words document:
PUT {} IN collection
FOR line IN document:
FOR word IN split line:
IF word not.in collection:
INSERT word IN collection
RETURN collection
Modula-3
TRY
DO.Something()
EXCEPT
| IO.Error => IO.Put("An I/O error occurred.")
END;
3 / 37
5. Цели и результаты1
• Хотелось простой, понятный, удобный и полезный язык с
открытым исходным кодом.
• Получилось
def magic(dir):
acc = []
for root, dirs, files in os.walk(dir):
acc.extend(os.path.join(root, file)
for file in files)
return acc
• Что делает функция magic?
1
https://www.python.org/doc/essays/cp4e
4 / 37
6. Python — динамический интепретируемый язык
>>> def add(x, y):
... return x + y
...
>>> def bar(x):
... add(x, "1", "2") # не ошибка
...
>>> add.__code__ = bar.__code__
>>> add(42)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in bar
TypeError: bar() takes 1 positional argument but 3 [...]
5 / 37
9. Python 2000 и Python 30002
• Две несовместимых ветки языка: Python 2.X и Python 3.X.
• Официально ветка 2.X в режиме поддержки, а 3.X — в
режиме развития.
• Мы будем использовать ветку 3.X.
2
http://vitaliypodoba.com/2014/05/python2-or-python3
8 / 37
11. Основные идеи языка: файл, модуль, пространство имён
>>> import hello
>>> hello
<module 'hello' from '[...]/hello.py'>
>>> dir(hello)
['__builtins__', '__cached__', '__doc__', '__file__',
'__loader__', '__name__', '__package__', '__spec__',
'message']
>>> hello.__name__, hello.__file__
('hello', '[...]/hello.py')
>>> print(hello.message)
"Hello, world!"
9 / 37
12. Основные идеи языка: отступы вместо скобочек
>>> while True:
... print(42)
File "<stdin>", line 2
print(42)
^
IndentationError: expected an indented block
10 / 37
13. Основные идеи языка: всё есть объект
>>> import hello
>>> type(hello)
<class 'module'>
>>> type(type(hello))
<class 'type'>
>>> type(type(type(hello)))
<class 'type'>
11 / 37
20. Основные типы языка: кортеж
>>> tuple() # неизменяемый
()
>>> date = ("year", 2015)
('year', 2015)
>>> len(date)
2
>>> date[1] = 2016
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> del date[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
17 / 37
21. Основные типы языка: множество
>>> set() # хеш-сет
set()
>>> xs = {1, 2, 3, 4}
>>> 42 in xs
False
>>> 42 not in xs
True
>>> xs.add(42) # {1, 2, 3, 4, 42}
>>> xs.discard(42) # {1, 2, 3, 4}
Капитан сообщает
Операторы in и not in работают для всех контейнеров:
>>> 42 in [1, 2, 3, 4]
False
>>> "month" not in ("year", 2015)
True
18 / 37
23. Основные типы языка: словарь
>>> {} # или dict(), хеш-таблица
{}
>>> date = {"year": 2015, "month": "September"}
>>> len(date)
2
>>> date["year"]
2015
>>> date.get("day", 7)
7
>>> date["year"] = 2016
>>> date
{'month': 'September', 'year': 2016}
>>> del date["year"] # или date.pop("year")
{'month': 'Semptember'}
Вопрос
Как проверить наличие элемента в словаре?
20 / 37
24. Основные типы языка: ключи и значения
>>> date = {"year": 2015, "month": "September"}
>>> date.keys()
dict_keys(['month', 'year'])
>>> date.values()
dict_values(['September', 2015])
>>> date.items()
dict_items([('month', 'September'), ('year', 2015)])
>>> other_date = {"month": "October", "day": 24}
>>> date.keys() + other_date.keys()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: [...]
>>> date.keys() | other_date.keys()
{'date', 'month', 'year'}
21 / 37
25. Основные типы языка: резюме
• Базовых типов не очень много:
• None;
• логические True, False;
• числовые int, float, complex;
• строковые bytes, str;
• изменяемые коллекции list, set, dict,
• неизменяемые коллекции tuple.
• Чаще всего над объектами из одной группы можно
совершить конкретное действие одним очевидным
способом:
>>> 1 + 1
>>> 1. + 1.
>>> 1j + 1j
>>> b"p" + b"y"
b'py'
>>> "p" + "y"
'py
>>> 42 in {42}
>>> 42 in [42]
>>> 42 in {42: "..."}
22 / 37
27. Основные конструкции языка: if
>>> x = 42
>>> if x % 5 == 0:
... print("fizz")
... elif x % 3 == 0:
... print("buzz")
... else:
... pass # необязательная ветка
...
buzz
Тернарный оператор
>>> "even" if x % 2 == 0 else "odd"
'even'
Мотивацию для такого решения Гвидо можно прочитать в
архивах рассылки python-dev3.
3
http://bit.ly/python-dev-ifthen
23 / 37
28. Основные конструкции языка: while и for
>>> i = 0
>>> while i < 10:
... i += 1
...
>>> i
10
>>> sum = 0
>>> for i in range(1, 5):
... sum += i * i
...
>>> sum
30
Капитан сообщает
В Python есть операторы break и continue, которые работают ≈
также как и в других императивных языках.
>>> while False:
... pass
... else:
... print("What on earth is this?")
...
What on earth is this?
24 / 37
29. Основные конструкции языка: range и reversed
range
Принимает три аргумента: начало полуинтервала, конец
полуинтервала и опциональный аргумент — шаг, который
может быть отрицательным.
>>> range(0, 5, 2)
range(0, 5, 2)
>>> list(range(0, 5, 2))
[0, 2, 4]
>>> list(range(4, -1, -2))
[4, 2, 0]
reversed
Перечисляет элементы переданной ей последовательности в
обратном порядке.
>>> list(reversed([1, 2, 3]))
[3, 2, 1]
25 / 37
30. Основные конструкции языка: больше о for
for можно использовать для итерации по коллекциям, файлам
и вообще много чему.
>>> for x in [0, 1, 1, 2, 3]:
... pass
...
>>> for x in reversed([0, 1, 1, 2, 3]):
... pass
...
>>> for line in open("./HBA1.txt"):
... pass
...
>>> for ch in "abracadabra":
... pass
26 / 37
31. Основные конструкции языка: резюме
• В Python есть многое из того, что так дорого программисту
на императивном языке: if, for, while, тернарный
оператор.
• В Python нет
• фигурных скобок для обозначения области видимости,
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
• циклов с пост-условием, потому что while вполне
достаточно,
• операторов switch и for с явным счетчиком, потому что
они имеют нетривиальную семантику.
27 / 37
32. Zen
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
28 / 37
34. IPython за 5 минут
• IPython — более лучшая интерактивная оболочка для
языка Python.
• Она поддерживает:
• интроспекцию и дополнение имён модулей, классов,
методов, переменных,
• работу с историей,
• использование стандартных команд UNIX, например, ls,
• систему “магических” команд %%magic.
• Установить можно с помощью менеджера пакетов pip
$ pip install "ipython[all]"
30 / 37
35. IPython: интроспекция и дополнение
In [1]: from builtins import di<TAB>
dict dir divmod
In [2]: d = {"foo": "bar"}
In [3]: d.c<TAB>
d.clear d.copy
In [4]: def f():
...: "I do nothing and return 42."
...: return 42
...:
In [5]: f? # вывод ?? также содержит исходный код.
Type: function
String form: <function f at 0x103d68ae8>
File: ...
Definition: f()
Docstring: I do nothing and return 42.
31 / 37
36. IPython: работа с историей
# номер ячейки
# |
# v
In [1]: [1, 2, 3]
Out[1]: [1, 2, 3]
In [2]: _[1:] # ссылка на предыдущую ячейку
Out[2]: [2, 3]
In [3]: __[1:] # ссылка на две ячейки назад
Out[3]: [2, 3]
In [4]: Out[2] == Out[3] # ссылка на ячейку по номеру
Out[4]: True
32 / 37
37. IPython: стандартные команды UNIX
In [1]: pwd
Out[1]: './cscenter/python'
In [2]: ls lecture*.tex
lecture-base.tex lecture01.tex
In [3]: cd /tmp
/tmp
In [4]: !date
Wed 2 Sep 2015 23:26:54 MSK
In [5]: output = !date
In [6]: output
Out[6]: ['Wed 2 Sep 2015 23:27:08 MSK']
33 / 37
38. IPython: “магические” команды
• “Магические” команды отвечают за магию.
• Однострочные “магические” команды начинаются с
символа %, многострочные — с %%.
• Пример однострочной “магической” команды, которая
позволяет отредактировать и вычислить содержимое
ячейки с указанным номером:
In [1]: def f():
...: pass
...:
In [2]: %edit 1
IPython will make a temporary file named: [...]
done. Executing edited code...
Out[2]: 'def f():n return 42n'
In [3]: f()
Out[3]: 42
34 / 37
39. IPython: “магические” команды и автомагия
• По умолчанию IPython работает в режиме %automagic, то
есть префикс % у однострочных команд можно не писать.
• Команды UNIX, которыми мы уже пользовались, — это
“магические” команды IPython, вызванные без префикса %.
• Пример многострочной “магической” команды, которая
сохраняет содержимое ячейки в указанный файл:
In [1]: %%writefile /tmp/example.py
...: def f():
...: return 42
...:
Writing /tmp/example.py
In [2]: %load /tmp/example.py
In [4]: f()
Out[4]: 42
35 / 37
40. IPython: больше “магических” команд
In [1]: env EDITOR
Out[1]: 'nano'
In [2]: env EDITOR=emacs
env: EDITOR=emacs
In [3]: %cpaste
Pasting code; enter '--' alone on the line to stop
: def f():
: return "I'm badly indented!"
:--
In [4]: f()
Out[4]: "I'm badly indented!"
In [5]: %timeit sum(range(1000))
10000 loops, best of 3: 25.1 µs per loop
In [6]: %lsmagic # DIY.
36 / 37
41. IPython: резюме
• IPython — удобная и полезная альтернатива стандартной
интерактивной оболочке Python.
• Мы поговорили только про основы её использования.
Больше информации можно найти на сайте:
http://ipython.org.
37 / 37