Join the nice side
We have Python!!!
Устали от...
• segfault-ов
• логики, смешанной с
представлением
• получасовой компиляции
• усложненного синтаксиса
?
http://www.python.org
http://www.python.com
Классификация
• Скриптовый
• Интерпретируемый
• Динамический
• Строгий по типизации
o нельзя сложить строку и число
o нет неявных приведений типов
• C-образный синтаксис
Достоинства
• простой синтаксис
o мало ключевых слов
o форматирование
• легкость в обучении
• синтаксическая мощь
• скорость
• библиотеки
o масса готовых
o расширяемость
• разумный дизайн (import this)
• работает везде
o множество портов
o машинно-независимый байт-код
Программы
• текстовые .py файлы
o может быть и программой и модулем
o это часто используется для тестов
• любой модуль отдельное пространство имен
• пространство имен модуля - глобально
Переменные и типы
• не нуждается в объявлении
>>> a = 1
>>>
• присваивание не возвращает значения
• >>> a
1
• перед использованием надо создать
>>> b
.....
Name error: name 'b' is not defined
• всегда имеют тип
>>> type(a)
<type 'int'>
Строки
• заключаются в кавычки (любые)
• тройные кавычки - многострочники
• последовательность символов, включая NULL
o фактически заменяют массивы байтов
• >>> s = 'Hello'
>>> s
'Hello'
>>> s = "Say 'hello'"
>>> s
"Say 'hello'"
>>> s = """This can be
a multiline string"""
Числа
• int - соответсвует long в С
o >>> 5 / 2
2
o >>> 5 / 2.0
2.5
• float - соответсвует double
• long - не ограниченной длины
o автоматически конвертируется из int
o >>> h = 1L << 64
>>> h ** 5
2135987035920910082395021706169552114
6027045223566527699470416078222197257
80640550022962086936576L
Списки
• хранят любые элементы
o заменяют массивы
o задаются с помощью [ ]
• >>> lst = []
>>> lst.append(1)
>>> lst.append("hi")
>>> len(lst)
2
>>> lst[0] = 2
>>> a = lst.pop()
Tuples
• таплы, или кортежи
o сходны по принципу со списками
o последовательность любых элементов
o не изменяемы
• автоматическая упаковка/распаковка
o >>> point = 2, 3
>>> x, y = point
>>> x
2
o >>> single = (1,)
• используются для возврата нескольких значений из
функций
Словари
• хранят пары ключ-значение
o иногда называются хешами
o ключи должны быть неизменяемыми
o значения могут быть любыми
• >>> d = {}
>>> d['foo'] = 'bar'
>>> d[1] = 'boz'
>>> cd = {'name': 'John Applseed',
'age': 15,
'tags': ['friend', 'school']}
Блоки
• формируются отступами
o двоеточие - начало блока
o можно использовать пробелы и табы
o можно смешивать, но лучше - не нужно
o стандарт - 4 пробела
• >>> if True:
... print 'Hi'
...
Hi
>>>
Циклы
• цикл for используется для итерирования
• >>> for ch in 'xyz':
... print ch
...
x
y
z
• функция xrange() возвращает генератор для циклов со
счетчиком
• while - цикл с условием
• есть операторы continue и break
• циклы могут иметь блок else
Функции
• объявляются ключевым словом def:
o >>> def useless(val):
... return val + 2
...
>>> useless(3)
5
• функции являются значениями
o >>> useless
<function useless at fac680>
>>> foo = useless
>>> foo(2)
5
Классы
• создаются ключевым словом class
• бывают old и new style
• >>> class Simple(object):
... def __init__(self, param):
... self._param = param
... self._inner = 5
... def get_param(self):
... return self._param
...
>>> s = Simple(4)
>>> print s.get_param()
4
Классы (продолжение)
• специальные методы
o __init__ - инициализатор
o __del__ - деструктор
• self - явный указатель на экземпляр класса
o автоматически подставляется при вызове
o имя self - не обязательное, но рекомендуемое
• как и функция является значением
o >>> Other = Simple
>>> cl = Other(2)
Модули
• реализуются на Python и C/C++
• для подключения используется import
o >>> import math
>>> mat.sin(1)
• возможен частичный импорт
o >>> from math import cos
>>> cos(0)
• импорт со сменой имени
o >>> from os.path import join as path_join
>>> path_join('/usr/bin/', 'python')
Исключения
• используются для обработки ошибок
• >>> try:
... 1/0
... except ZeroDivisionError:
... print 'Ouch'
...
Ouch
• Допускается несколько блоков except
• Блок finally - для всегда выполняющегося кода
• Блок else - если не было исключений
Потоки
• легко реализуются
• >>> from time import sleep
>>> from threading import Thread
>>> class MyThread(Thread):
... def run(self):
... for i in xrange(3):
... print i,
... sleep(1)
...
>>> t = MyThread()
>>> t.start()
0 1 2
Стандартная библиотека
• в поставку python входит набор стандартных
библиотек
• реализована масса функций
o сокеты; протоколы интернет; сервисы ОС; GUI (Tk);
работа с СУБД; работа с датами, временем и
календарями; отладчик; профилировщик; парсер
python; работа с файлами; персистентность;
многопоточность и многопроцессовость и т.д.

Join the python_side

  • 1.
    Join the niceside We have Python!!!
  • 2.
    Устали от... • segfault-ов •логики, смешанной с представлением • получасовой компиляции • усложненного синтаксиса ?
  • 3.
  • 4.
    Классификация • Скриптовый • Интерпретируемый •Динамический • Строгий по типизации o нельзя сложить строку и число o нет неявных приведений типов • C-образный синтаксис
  • 5.
    Достоинства • простой синтаксис oмало ключевых слов o форматирование • легкость в обучении • синтаксическая мощь • скорость • библиотеки o масса готовых o расширяемость • разумный дизайн (import this) • работает везде o множество портов o машинно-независимый байт-код
  • 6.
    Программы • текстовые .pyфайлы o может быть и программой и модулем o это часто используется для тестов • любой модуль отдельное пространство имен • пространство имен модуля - глобально
  • 7.
    Переменные и типы •не нуждается в объявлении >>> a = 1 >>> • присваивание не возвращает значения • >>> a 1 • перед использованием надо создать >>> b ..... Name error: name 'b' is not defined • всегда имеют тип >>> type(a) <type 'int'>
  • 8.
    Строки • заключаются вкавычки (любые) • тройные кавычки - многострочники • последовательность символов, включая NULL o фактически заменяют массивы байтов • >>> s = 'Hello' >>> s 'Hello' >>> s = "Say 'hello'" >>> s "Say 'hello'" >>> s = """This can be a multiline string"""
  • 9.
    Числа • int -соответсвует long в С o >>> 5 / 2 2 o >>> 5 / 2.0 2.5 • float - соответсвует double • long - не ограниченной длины o автоматически конвертируется из int o >>> h = 1L << 64 >>> h ** 5 2135987035920910082395021706169552114 6027045223566527699470416078222197257 80640550022962086936576L
  • 10.
    Списки • хранят любыеэлементы o заменяют массивы o задаются с помощью [ ] • >>> lst = [] >>> lst.append(1) >>> lst.append("hi") >>> len(lst) 2 >>> lst[0] = 2 >>> a = lst.pop()
  • 11.
    Tuples • таплы, иликортежи o сходны по принципу со списками o последовательность любых элементов o не изменяемы • автоматическая упаковка/распаковка o >>> point = 2, 3 >>> x, y = point >>> x 2 o >>> single = (1,) • используются для возврата нескольких значений из функций
  • 12.
    Словари • хранят парыключ-значение o иногда называются хешами o ключи должны быть неизменяемыми o значения могут быть любыми • >>> d = {} >>> d['foo'] = 'bar' >>> d[1] = 'boz' >>> cd = {'name': 'John Applseed', 'age': 15, 'tags': ['friend', 'school']}
  • 13.
    Блоки • формируются отступами oдвоеточие - начало блока o можно использовать пробелы и табы o можно смешивать, но лучше - не нужно o стандарт - 4 пробела • >>> if True: ... print 'Hi' ... Hi >>>
  • 14.
    Циклы • цикл forиспользуется для итерирования • >>> for ch in 'xyz': ... print ch ... x y z • функция xrange() возвращает генератор для циклов со счетчиком • while - цикл с условием • есть операторы continue и break • циклы могут иметь блок else
  • 15.
    Функции • объявляются ключевымсловом def: o >>> def useless(val): ... return val + 2 ... >>> useless(3) 5 • функции являются значениями o >>> useless <function useless at fac680> >>> foo = useless >>> foo(2) 5
  • 16.
    Классы • создаются ключевымсловом class • бывают old и new style • >>> class Simple(object): ... def __init__(self, param): ... self._param = param ... self._inner = 5 ... def get_param(self): ... return self._param ... >>> s = Simple(4) >>> print s.get_param() 4
  • 17.
    Классы (продолжение) • специальныеметоды o __init__ - инициализатор o __del__ - деструктор • self - явный указатель на экземпляр класса o автоматически подставляется при вызове o имя self - не обязательное, но рекомендуемое • как и функция является значением o >>> Other = Simple >>> cl = Other(2)
  • 18.
    Модули • реализуются наPython и C/C++ • для подключения используется import o >>> import math >>> mat.sin(1) • возможен частичный импорт o >>> from math import cos >>> cos(0) • импорт со сменой имени o >>> from os.path import join as path_join >>> path_join('/usr/bin/', 'python')
  • 19.
    Исключения • используются дляобработки ошибок • >>> try: ... 1/0 ... except ZeroDivisionError: ... print 'Ouch' ... Ouch • Допускается несколько блоков except • Блок finally - для всегда выполняющегося кода • Блок else - если не было исключений
  • 20.
    Потоки • легко реализуются •>>> from time import sleep >>> from threading import Thread >>> class MyThread(Thread): ... def run(self): ... for i in xrange(3): ... print i, ... sleep(1) ... >>> t = MyThread() >>> t.start() 0 1 2
  • 21.
    Стандартная библиотека • впоставку python входит набор стандартных библиотек • реализована масса функций o сокеты; протоколы интернет; сервисы ОС; GUI (Tk); работа с СУБД; работа с датами, временем и календарями; отладчик; профилировщик; парсер python; работа с файлами; персистентность; многопоточность и многопроцессовость и т.д.