Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Введение в Python и Django

3 344 vues

Publié le

Лекция на тему "Введение в Python и Django".

Ляпун Тарас
Хмельницкий
29 августа 2014

Publié dans : Logiciels
  • Soyez le premier à commenter

Введение в Python и Django

  1. 1. Введение в Python и Django Ляпун Тарас, Хмельницкий, 2014
  2. 2. Мой опыт
  3. 3. История Python • Появился в 1991 году • Автор - Гвидо Ван Россум • Назван в честь телешоу «Летающий цирк Монти Пайтона» • Python 1.0 - January 1994 • Python 2.0 - October 16, 2000 • Python 3.0 - December 3, 2008 • Текущие версии: • Python 2.7.8 • Python 3.4.1
  4. 4. “1991 - Dutch programmer Guido van Rossum travels to Argentina for a mysterious operation. He returns with a large cranial scar, invents Python, is declared Dictator for Life by legions of followers, and announces to the world that "There Is Only One Way to Do It." Poland becomes nervous.” – JAMES IRY «A Brief, Incomplete, and Mostly Wrong History of Programming Languages» http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly- wrong.html
  5. 5. Основные черты языка • Высокоуровневый • Интерпретируемый • Open Source (Python Software Foundation License) • Динамическая типизация • Автоматическое управление памятью • Полная интроспекция • Все является объектом
  6. 6. “Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance –http://python.org/ cost.”
  7. 7. Главные преимущества • Ориентирован на повышение производительности разработчика и на читаемость кода • Компактный • Портируемость • Легко расширяемый с помощью CC++
  8. 8. Мультипарадигменный язык программирования • Структурное • Объектно-ориентированное • Функциональное • Императивное • Аспектно-ориентированное • Мета
  9. 9. Влияние других языков • ABC — отступы для группировки операторов, высокоуровневые структуры данных (map) • Modula-3 — пакеты, модули, использование else совместно с try и except, именованные аргументы функций • С, C++ — некоторые синтаксические конструкции • Smalltalk — объектно-ориентированное программирование; • Lisp — отдельные черты функционального программирования (lambda, map, reduce, filter и другие); • Fortran — срезы массивов, комплексная арифметика; • Miranda — списочные выражения; • Java — модули logging, unittest, threading, xml.sax стандартной библиотеки, совместное использование finally и except при обработке исключений, использование @ для декораторов; • Icon — генераторы.
  10. 10. Влияние на другие языки • Ruby • Boo • Groovy • ECMAScript (JavaScript) • CoffeeScript
  11. 11. Реализации PyS60 Pyjamas
  12. 12. Кто использует
  13. 13. Интерактивная консоль 1/3
  14. 14. Интерактивная консоль 2/3
  15. 15. Интерактивная консоль 3/3
  16. 16. Философия Python (PEP - 020)
  17. 17. Синтаксис
  18. 18. Типы и структуры данных 1/4
  19. 19. Типы и структуры данных 2/4
  20. 20. Типы и структуры данных 3/4
  21. 21. Типы и структуры данных 4/4
  22. 22. Приведение типов
  23. 23. Строки
  24. 24. Списки 1/3
  25. 25. Списки 2/3
  26. 26. Списки 3/3
  27. 27. Генераторы списков (List comprehension)
  28. 28. Словари 1/3
  29. 29. Словари 2/3
  30. 30. Словари 3/3
  31. 31. Условные операторы Нету switch’a
  32. 32. Циклы 1/2
  33. 33. Циклы 2/2
  34. 34. Функции
  35. 35. Обработка исключений
  36. 36. Классы 1/2
  37. 37. Классы 2/2 • Классы являются объектами • Множественное наследование, mixins • Полиморфизм • Перегрузка операторов (например <, >, ==, +, -, *, etc) • Нету настоящих private методоватрибутов. По конвенции приватные методыатрибуты начинаются с _ (нижнего подчеркивания) • Нет полноценных интерфейсов, но есть абстрактные классы • ООП без заморочек • Метапрограммирование
  38. 38. Дескрипторы
  39. 39. Контекст менеджеры
  40. 40. Декораторы
  41. 41. Генераторы
  42. 42. Ленивые вычисления
  43. 43. Функциональное программирование 1/2
  44. 44. Функциональное программирование 2/2 • Функция является объектом • Функция объект высшего порядка • Рекурсия (нет оптимизации хвостовой рекурсии) • Развитая обработка списков • Замыкания • Частичное применение функции (partial) • fn.py (https://github.com/kachayev/fn.py)
  45. 45. Система модулей # main.py from .utils import something from utils.date import something2 from utils import * # не рекомендуется, но можно from any_lib import something3 import utils.helpers as helpers something() helpers.something()
  46. 46. Стандартная библиотека socket, select, SocketServer, BaseHTTPServer, asyncore, asynchat, xmlrpclib, SimpleXMLRPCServer, urllib, httplib, ftplib, smtpd, poplib, impalib, json, getopt, optparse, argparse, fileimput, cmd, readline, subprocess, threading, multiprocessing, Queue, anydbm, pickle, csv, shelve, sqlite3, etc
  47. 47. Пример отличного API - json
  48. 48. Пример отличного API - requests
  49. 49. Где искать библиотеки • https://pypi.python.org/pypi - the Python Package Index • http://guide.python-distribute.org/ - The Hitchhiker’s Guide to Packaging • https://github.com/vinta/awesome-python - A curated list of awesome Python frameworks, libraries and software. • Bonus: https://github.com/bayandin/awesome-awesomeness
  50. 50. PIP
  51. 51. Virtualenv • Изолированное python окружение • Разные версии библиотек на разных проектах • virtualenvwrapper • В Python3 из коробки
  52. 52. PEP (Python Enhancement Proposal) • PEP - документ предоставляющий общую информацию о языке • Сначала создается PEP, потом новая фича языка • PEP-8 - правила оформления кода • PEP-3000 - описывает переход на Python 3 • PEP-20 - zen of Python
  53. 53. GIL • Global Interpreter Lock • Python потоки - родные потоки (POSIX потоки на Unix) • Может быть только один выполняемый поток в одну единицу времени • Масштабируем процессами • Пишем асинхронный код, или используем «зеленые» треды
  54. 54. Debugging • pdb - встроенный отладчик • ipdb - ipython для встроенного отладчика • pudb - визуальный отладчик
  55. 55. Testing • unittest - стандартная библиотека • nose - утилиты для тестирования, test discovering • pytest - новая модная библиотека для тестирования • mamba - BDD • pyvows - BDD • Splinter - обертка над Selenium • mock - моки (в Python 3 из коробки) • httpretty - моки для веб ресурсов • tox - тестирование со всеми версиями Python
  56. 56. Linting • Flake8 - pep8, pyflakes • Pylint - analyzer • Prospector - everything together
  57. 57. Текстовые редакторы IDE • vim + plugins • emacs + plugins • Sublime Text + plugins • PyCharm • Eclipse + PyDev plugin
  58. 58. Использование Python
  59. 59. «Классическая» веб - разработка
  60. 60. Асинхронные вебсетевые приложения Twisted gevent asyncio
  61. 61. Научные, математические вычисления
  62. 62. Научные, математические вычисления
  63. 63. Machine Learning scikit-learn PyBrain
  64. 64. Natural Language Processing NLTK Pattern
  65. 65. GUI TkInter PyQT
  66. 66. Базы данных peewee
  67. 67. Игры
  68. 68. DevOps
  69. 69. Web scrapping BeautifulSoup RoboBrowser MechanicalSoup
  70. 70. Как учить? https://www.python.org/
  71. 71. Как учить?
  72. 72. Как учить? http://learnpythonthehardway.org/
  73. 73. Как учить? http://www.learnpython.org/
  74. 74. Как учить? http://www.fullstackpython.com/
  75. 75. Как учить? http://www.checkio.org/
  76. 76. Как учить? http://www.pythonchallenge.com/
  77. 77. Быть в курсе
  78. 78. Конференции 1/3 • PyCon Ukraine - http://ua.pycon.org (1-2 ноября) • Kyiv.py (27 сентября #13) • Kharkiv.py • Lviv.py • Odessa.py • http://meetup.com/uapycon/
  79. 79. Конференции 2/3 • PyCon US (2003 год - 200 участников, 2013-2014 - 2500) • EuroPython (с 2002 года) • New Zealand, Singapore, Argentina, Australia, Bangladesh, Brazil, Canada, China, Germany, Finland, France, India, Ireland, Italy, Japan, Philippines, Poland, South Africa, Taiwan, United Kingdom, Ukraine Venezuela Python
  80. 80. Конференции 3/3 • SciPy • PyData • DjangoCon US • DjangoCon Europe
  81. 81. Кто использует
  82. 82. История Django • 2003 - появился (Adrian Holovaty, Simon Willison) • 2005 - первый релиз (лицензия BSD) • Июнь 2008 - Django Software Foundation • Текущая версия 1.6 • В сентябре - 1.7
  83. 83. Django MVC • MVC - Model - View - Controller • MTV - Model - Template - View
  84. 84. Django CLI
  85. 85. Django ORM
  86. 86. Django ORM
  87. 87. Django ORM • Поддержка sqlite, mysql, postgresql, oracle • Active record • Транзакции • ForeignKey, OneToOneField, ManyToManyField • Авто создание базы, миграции (начиная с 1.7) • JsonField, ArrayField, HstoreField с помощью дополнительных библиотек • Multidatabase support
  88. 88. Django Routing
  89. 89. Django Views (function based)
  90. 90. Django Views (Class based)
  91. 91. Django Templates
  92. 92. Django Forms
  93. 93. Django Middleware
  94. 94. Django Middleware
  95. 95. Django Admin
  96. 96. Django Admin (Django-Suit)
  97. 97. Security • Cross site scripting (XSS) protection • Cross site request forgery (CSRF) protection • SQL injection protection • Clickjacking protection • SSL/HTTPS • Host header validation • Session security
  98. 98. MISC • Development server • Authentication, Authorization • Caching system • Testing Framework • RSS, Atom • Static pages • i18n, l10n • Pagination • Timezone • GeoDjango • Logging • Sending emails • Messages framework • Serialization • Sitemaps • Static file management • Signals • Sites framework • Context processors • Custom tags, filters
  99. 99. Django строительные блоки • pip install django-* • add to INSTALLED_APPS • register routing • ENJOY • https://www.djangopackages.com/
  100. 100. Best apps • Sentry - logging exceptions • Haystack - integrate search engines (ElasticSearch, Solr) • Tastypie, Django-Rest-Framework - REST • django-extensions - a lot of cool stuff • Celery - background jobs • sorl-thumbnail - thumbnails • django-storages - s3, gridfs, etc • django-debug-toolbar - кол-во запросов к базе, время загрузки, и т.д. • django-compressor - сжатие и обработка статики
  101. 101. Django готовые решения • Django CMS (+ Django Shop) • Mezzanine (+ Mezzanine Cart) • Oscar • Pinax • Djedi-CMS • Fein-CMS • Opps-CMS • Wagtail CMS • Widgy CMS
  102. 102. WSGI • Web Server Gateway Interface • Описывает как веб сервер общается с веб приложением • И как веб приложение компонуется для обработки запроса • PEP-3333
  103. 103. Deployment
  104. 104. Как учить? https://docs.djangoproject.com
  105. 105. Как учить? http://www.djangobook.com/
  106. 106. Как учить? http://www.tangowithdjango.com/
  107. 107. Как учить?
  108. 108. Как учить?
  109. 109. Вопросы • @tlyapun • github/lyapun • facebook/taras.lyapun

×