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. “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. Основные черты языка
• Высокоуровневый
• Интерпретируемый
• Open Source (Python Software Foundation License)
• Динамическая типизация
• Автоматическое управление памятью
• Полная интроспекция
• Все является объектом
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. Главные преимущества
• Ориентирован на повышение производительности
разработчика и на читаемость кода
• Компактный
• Портируемость
• Легко расширяемый с помощью CC++
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. Влияние на другие языки
• Ruby
• Boo
• Groovy
• ECMAScript (JavaScript)
• CoffeeScript
44. Функциональное программирование 2/2
• Функция является объектом
• Функция объект высшего порядка
• Рекурсия (нет оптимизации хвостовой рекурсии)
• Развитая обработка списков
• Замыкания
• Частичное применение функции (partial)
• fn.py (https://github.com/kachayev/fn.py)
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()
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
51. Virtualenv
• Изолированное python окружение
• Разные версии библиотек на разных проектах
• virtualenvwrapper
• В Python3 из коробки
52. PEP (Python Enhancement Proposal)
• PEP - документ предоставляющий общую
информацию о языке
• Сначала создается PEP, потом новая фича языка
• PEP-8 - правила оформления кода
• PEP-3000 - описывает переход на Python 3
• PEP-20 - zen of Python
53. GIL
• Global Interpreter Lock
• Python потоки - родные потоки (POSIX потоки на Unix)
• Может быть только один выполняемый поток в одну
единицу времени
• Масштабируем процессами
• Пишем асинхронный код, или используем «зеленые»
треды
55. Testing
• unittest - стандартная библиотека
• nose - утилиты для тестирования, test discovering
• pytest - новая модная библиотека для тестирования
• mamba - BDD
• pyvows - BDD
• Splinter - обертка над Selenium
• mock - моки (в Python 3 из коробки)
• httpretty - моки для веб ресурсов
• tox - тестирование со всеми версиями Python
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
85. История Django
• 2003 - появился (Adrian Holovaty, Simon Willison)
• 2005 - первый релиз (лицензия BSD)
• Июнь 2008 - Django Software Foundation
• Текущая версия 1.6
• В сентябре - 1.7
86. Django MVC
• MVC - Model - View -
Controller
• MTV - Model - Template - View
90. Django ORM
• Поддержка sqlite, mysql, postgresql, oracle
• Active record
• Транзакции
• ForeignKey, OneToOneField, ManyToManyField
• Авто создание базы, миграции (начиная с 1.7)
• JsonField, ArrayField, HstoreField с помощью дополнительных
библиотек
• Multidatabase support
105. WSGI
• Web Server Gateway Interface
• Описывает как веб сервер общается с веб
приложением
• И как веб приложение компонуется для обработки
запроса
• PEP-3333