Download - Kranonit s16 (python). sergey burma
![Page 1: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/1.jpg)
kranonit S16 02.11.2013
![Page 2: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/2.jpg)
Сергей БурмаPython-разработчик
Полтора года с Python на фрилансе. Год до этого - как любитель.
Люблю:● Django;● Tornado;● Redis;● Черную магию (Gevent, ФП);● Инди-игры;● Хорошо приготовленный кофе:)
![Page 3: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/3.jpg)
Факториал на Python
reduce(lambda x, y: x * y, xrange(1, x+1))
Факториал 10 000:● ~200 мс;● около ТРИДЦАТИ ПЯТИ ТЫСЯЧ знаков.
![Page 4: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/4.jpg)
Гвидо Ван Россум
![Page 5: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/5.jpg)
Кто использует?
● NASA● Google● Yahoo● Yandex● Dropbox● IBM● Bitbucket● …и все остальные;)
![Page 6: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/6.jpg)
The Zen of Python● 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!
![Page 7: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/7.jpg)
Простота и понятность!
![Page 8: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/8.jpg)
Да-да, именно он будет поддерживать ваш код!
![Page 9: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/9.jpg)
Говорить легко, но как делать?
![Page 10: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/10.jpg)
● PEP8;● функция должна вмещаться в экран;● одна операция на строку;● правильные задачи.
Неправильно:reduce(lambda x, y: x * y, xrange(1, x+1))
Правильно:def multiply(x, y):
return x * y
def factorial(x):numbers = xrange(1, x + 1)result = reduce(multiply, numbers)return result
![Page 11: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/11.jpg)
● На самом деле, как писать код говорит вам только совесть - язык мультипарадигменный.
● ООП реализовано ненавязчиво, хоть все и говорят, что так не тру.
● Очень приятная реализация механизма исключений.● Продуманная система типов и структур данных. Того
что есть хватит надолго, работает все к тому же быстро.
● Продвинутые неизменяемые типы, такие как string, tuple, frozen set, которые можно использовать, например, как хеши в словаре.
● Продвинутая работа с функциями, но от этого страдает простота кода, так что не рекомендуется.
Возможности
![Page 12: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/12.jpg)
2 или 3?
![Page 13: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/13.jpg)
● Огромное количество библиотек еще не портировано.
● Большинство относится скептически.
Но:● Версия 2.7.5 уже больше года не развивается.● В 3.3 есть много новых интересных решений.● Есть библиотеки для автоматического
портирования. Работают не везде.
![Page 14: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/14.jpg)
Плюшки
![Page 15: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/15.jpg)
● PEP8;● Global Interpreter Lock;● динамическая типизация;● куча интересных идей с асинхронностью;● очень крутая реализация REPL;● быстрая реализация и исполнение КОРРЕКТНЫХ
задач;● батарейки, очень много батареек, сразу;● огромное сообщество с пожизненным диктатором во
главе;● очень подробная документация, касающаяся всего;● PyPi.
![Page 16: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/16.jpg)
Неплюшки
![Page 17: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/17.jpg)
● PEP8;● Global Interpreter Lock;● динамическая типизация;● куча интересных идей с асинхронностью;● очень крутая реализация REPL;● быстрая реализация и исполнение КОРРЕКТНЫХ
задач;● батарейки, очень много батареек, сразу;● огромное сообщество с пожизненным диктатором во
главе;● очень подробная документация, касающаяся всего;● PyPi.
![Page 18: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/18.jpg)
И что с этим всем делать?
![Page 19: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/19.jpg)
● Web-сайты, серверные приложения;● парсеры;● нетребовательные к вычислениям десктопные
приложения;● системные скрипты;● мобильные приложения;● игры, в особенности рогалики;● разного рода прототипы, от идей до программ.
![Page 20: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/20.jpg)
С кем дружить?
![Page 21: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/21.jpg)
Интерпретаторы
● CPython;● Stackless Python;● RPython;● PyPy;● IronPython;● Jython.
![Page 22: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/22.jpg)
REPL
● Python;● IPython;● DreamPie;● REPL в PyCharm.
![Page 23: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/23.jpg)
Редакторы
● VIM, Emacs...;● Sublime Text Editor;● IDLE;● Geany.
![Page 24: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/24.jpg)
IDE
● Eclipse;● NetBeans;● PyCharm;● Eric и многие другие.
![Page 25: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/25.jpg)
Отдельные инструменты
● Mercurial;● PDB;● PyFlakes, PyLint, PEP8.
![Page 26: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/26.jpg)
На что стоит посмотреть?(субъективное мнение докладчика, которое может не совпадать с
реальностью)
![Page 27: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/27.jpg)
● крутая IDE в стиле IntelliJ IDEA;● продвинутая поддержка очень многих важных и
интересных решений;● интеграция всего, о чем вы даже не мечтали;● Community Edition.
Но:● неисправляемые от версии к версии баги, к счастью,
таких немного;● требовательность к ресурсам, настроение
разработчика будет зависеть от их количества.
![Page 28: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/28.jpg)
● The Web framework for perfectionists (with deadlines)● Models Views Templates● Просто делай, как тебе говорят, и у тебя будет
отличный код.● Множество батареек, встроенных тоже хватит
надолго.
Но:● Кое-какие моменты могут стать сюрпризом.● Очень прагматичное сообщество, да и сам django.● Тормознутость на сложных проектах, тут лучше
взять что-то другое или разбить на несколько.
![Page 29: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/29.jpg)
● Чудо. Вообще не представляю, как такое кому-то пришло в голову.
● Родные приложения под Windows, Linux, Mac OS X, Android, iOS. Но со встроенным Python’ом.
● Пиши-раз-компилируй-под-что-угодно. Почти правда.
● Куча готовых компонентов.
Но:● Новые компоненты нужно писать с учетом всех
поддерживаемых систем.● Сторонних библиотек мало.
kivy
![Page 30: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/30.jpg)
● Просто черная магия.
Но:● Есть шанс, что использовав раз, после смерти
можно попасть в ад.
gevent
![Page 31: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/31.jpg)
● Микрофреймворк, но с асинхронностью.● А еще веб-сервер и просто хорошая библиотека.● Можно прикрутить к django, чтобы тот мог думать не
только в пределах одного запроса.● Очень элегантная замена колбэкам, которую, кстати,
хотят внести в стандартную библиотеку. В стиле:result = yield db.read()
вместо: db.read(onComplete)
Но:● Мало асинхронных драйверов к базам данных. Есть
шанс упустить все плюсы.
![Page 32: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/32.jpg)
Взгляните еще на эти проекты:
● NumPy● lxml● requests● flask● bottle.py● Syte● django-tastypie● dajax● pygame● libtcod● cython
![Page 33: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/33.jpg)
…и на эти:
● Bitbucket.org● python.org● learnpython.org● checkio.org● heroku.com● appengine.google.com
![Page 34: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/34.jpg)
Вопросы?
![Page 35: Kranonit s16 (python). sergey burma](https://reader033.vdocuments.net/reader033/viewer/2022061214/549c94f0b47959fe318b47a1/html5/thumbnails/35.jpg)
Спасибо! Ищите меня здесь:
● https://bitbucket.org/batment● https://github.com/SergeyBurma● https://twitter.com/SergeyBurma● skype: s_burma