join the python_side
DESCRIPTION
TRANSCRIPT
Join the nice sideWe 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>>>
• присваивание не возвращает значения• >>> a1
• перед использованием надо создать>>> 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 bea multiline string"""
Числа
• int - соответсвует long в Сo >>> 5 / 22
o >>> 5 / 2.02.5
• float - соответсвует double• long - не ограниченной длины
o автоматически конвертируется из into >>> h = 1L << 64>>> h ** 52135987035920910082395021706169552114602704522356652769947041607822219725780640550022962086936576L
Списки
• хранят любые элементы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>>> x2
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...xyz
• функция 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; работа с файлами; персистентность; многопоточность и многопроцессовость и т.д.