In [ ]:
%%html
<style>
.text_cell_render * {
   font-family: OfficinaSansCTT;
}
.reveal code {
    font-family: OfficinaSansCTT;
}
.text_cell_render h3 {
   font-family: OfficinaSansCTT;
}
.reveal section img {
    max-height: 500px;
    margin-left: auto;
    margin-right: auto;
}
</style>

Пакеты и окружение для Python

  • easy_install (setuptools) - старый менеджер пакетов (практически не используется)
  • pip - новый менеджер пакетов
  • virtualenv - установить конкретные версии пакетов локально
  • virtualenvwrapper - отличная обертка для virtualenv
  • Общий репозиторий пакетов https://pypi.python.org/pypi
  • Предсобранные пакеты для Windows: http://www.lfd.uci.edu/~gohlke/pythonlibs/

http://docs.python-guide.org/en/latest/dev/virtualenvs/

Работа с virtualenv (если у вас Python с python.org)

  • Создаем окружение
    • python3 -m venv my_venv
  • Заходим в него:
    • source my_venv/bin/activate (на Windows: my_venv\scripts\activate.bat)
  • Выходим:
    • deactivate
  • Еще удобно через virtualenvwrapper:
    • workon my_venv ; lsvirtualenv ; rmvirtualenv my_venv
  • Лично я всегда первым делом обновляю установщики:
    • pip install -U pip wheel setuptools

Лучше ВООБЩЕ НИКОГДА не делать "sudo pip install"

Работа с virtualenv (если у вас Anaconda)

  • Создаем окружение
    • conda create --name my_venv
  • Заходим в него:
    • source activate my_venv/activate myenv
  • Выходим:
    • deactivate/source deactivate
  • Ставим пакеты с помощью conda install вместо pip install:
    • conda install requests
  • Чтобы удалить окружение, используем
    • conda remove --name my_venv --all

Лучше ВООБЩЕ НИКОГДА не делать "sudo pip install"

Подробнее: https://conda.io/docs/user-guide/tasks/manage-environments.html

IPython!

  • pip install ipython

  • Подстановка по Tab

  • История команд (стрелка вверх)
  • Интеграция с системным shell
  • Встроенный механизм показа справки ("?")
  • %magic
  • Редактирование многострочных кусков кода

In [ ]:
%time "list(range(1000000)); print('ololo')"

Вопрос

Какой "магической" командой можно померить время выполнения куска кода?

Jupyter (ex IPython Notebook)

  • Независимые ячейки с кодом
  • Текстовые данные, Markdown и LaTeX
  • Простой текстовый формат .ipynb
  • Inline-графика, в том числе трехмерная и интерактивная
  • Виджеты
  • Поддержка «ядер»

@ellisonbg @fperez_org

Как сделана эта презентация

https://github.com/damianavila/RISE

Прежде чем продолжать, давайте настроим, чтобы она работала у всех

Где лучше всего писать код проекта

Как выглядит проект на Python

  • Файлы (модули) Python имеют расширение ".py"
  • "Пакеты" Python - это папки, в которых есть файл __init__.py
  • Внутри модулей код разделен на функции и классы согласно логике приложения
  • Правилом хорошего тона считается оформлять код по PEP8

In [ ]:
def my_cool_function(a, b):
    return a + b

def my_cool_function2(a: int, b: int) -> int:
    return a + b

In [ ]:
def my_cool_function(a, b):
    return a + b

my_cool_function2("foo", "bar")

Заготовка для типичного скрипта на Python


In [ ]:
def main():
    # here be dragons
    return

if __name__ == "__main__":
    main()

Модули


In [ ]:
import random   # встроенный модуль
import os.path as op  # импорт с псевдонимом

In [ ]:
random.randint(1, 10)

In [ ]:
from os.path import *

In [ ]:
from sample2 import fibonacci

In [ ]:
sample2.fibonacci(5)

Обработка ошибок


In [ ]:
import traceback
d = {}
try:
    1 / 0
except KeyError as exc:
    print(traceback.format_exc())
except ZeroDivisionError as an_exc:
    print("bad luck")

Генерация списков (списковые включения)


In [ ]:
import random
a = [
    random.randint(-10, 10)
    for _ in range(10)
]
a

In [ ]:
b = [item ** 2 for item in a if item > 0]

In [ ]:
b

Еще немного встроенных функций

* Мы уже знаем max(), min(), sorted(), len(), sum(). Что они делают?
* А вот еще - any(), all(), abs(), dir()

In [ ]:
a = "asfdhasdfh"
dir(a)

А теперь дискотека

1. https://py.checkio.org/mission/even-last/
2. https://py.checkio.org/mission/secret-message/
3. https://py.checkio.org/mission/digits-multiplication/
4. https://py.checkio.org/mission/the-most-frequent/

In [ ]: