Главная страница

Знакомство с языком Python Ю. Астахов 18 ноября 2014 г


Скачать 3.73 Mb.
НазваниеЗнакомство с языком Python Ю. Астахов 18 ноября 2014 г
Анкорpython-asu.pdf
Дата20.09.2018
Размер3.73 Mb.
Формат файлаpdf
Имя файлаpython-asu.pdf
ТипДокументы
#24883

Знакомство с языком Python
Ю. Астахов
18 ноября 2014 г.
Ю. Астахов
Знакомство с языком Python

2. Python  высокоуровневый язык программирования
Основные особенности:
элегантность синтаксиса для улучшения читабельности,
простота языка  идеален для создания прототипов и универсален в плане применения,
обладает обширной встроенной библиотекой функций и классов,
имеет интерактивный интерпретатор,
может встраиваться в приложения в качестве интерфейса программирования и взаимодействия,
поддерживает различные ОС,
является открытым программным обеспечением.
Ю. Астахов
Знакомство с языком Python

3. Python  высокоуровневый язык программирования
Особенности языка:
доступны различные типы данных: числовые (с плавающей точкой, комплексные, целочисленные без ограничений),
строковые (как ASCII, так и Unicode), списки и словари;
поддерживает ООП с классами и множественным наследованием,
программы можно распределять между модулями или пакетами,
поддерживает секции-исключения для обработки ошибок,
динамические переменные строгой типизации, смешивание несовместимых типов приводит к исключению,
поддерживает такие техники программирования, как генераторы и сокращения,
использует автоматическое управление памятью.
Ю. Астахов
Знакомство с языком Python

4. Для чего используют Python
Улучшение качества программ;
Уменьшение затрат на разработку программ;
Возможность переноса программ на различные платформы;
Широкий набор встроенных функций, а также наличие большого количества сторонних программ и/или библиотек;
Компонентная интеграция:
выполнение кода Python в программах C или C++,
интеграция с компонентами Java и .NET,
работа с устройствами через последовательные порты,
взаимодействие через сеть с использованием SOAP, XML-RPC,
CORBA.
Ю. Астахов
Знакомство с языком Python

5. Модель выполнения Python
Текст? Байткод? Выполнение
Ю. Астахов
Знакомство с языком Python

6. Обратная сторона
Затраты на байткод
Возможное снижение скорости выполнения по сравнению с низкоуровневыми языками (C/C++).
Диалекты языка
По мере развития языка сменилось несколько поколений реализаций.
Перерождение персонального выбора
Является следствием развития и внедрения открытых проектов 
потенциальный триумф персональных/профессиональных предпочтнений меньшинства над широкоиспользуемыми инструментами. Приводит к возникновению отдельных случаев проявления анархии или даже элитизма.
Ю. Астахов
Знакомство с языком Python

7. Где используется Python
Ю. Астахов
Знакомство с языком Python

7. Где используется Python
Ю. Астахов
Знакомство с языком Python

7. Где используется Python
Ю. Астахов
Знакомство с языком Python

8. Среды разработчика для языка Python
Eclipse PyDev
Ю. Астахов
Знакомство с языком Python

9. Среды разработчика для языка Python
IDLE
Ю. Астахов
Знакомство с языком Python

10. Основные реализации Python
CPython
Реализация Python на портируемом ANSI C.
Jython: Python для Java
Jython состоит из классов Java, которые компилируют код Python в байткод Java для последующего выполнения на JVM.
IronPython: Python для .NET
Реализация аналогична Jython, только для среды .NET и Mono.
Stackless
Оптимизация стандартного CPython для параллелизма.
PyPy: Быстрый Python
Альтернативная реализация CPython для производительности с использованием динамической трансляции (JIT, Just-In-Time).
Ю. Астахов
Знакомство с языком Python

11. Python: Константы
Константы
Фиксированные значения такие, как числа, буквы или строки 
их значения не меняются.
Числовые константы пишутся как обычно.
Строковые константы используют одинарные или двойные кавычки.
Вывод констант
їїї print(1234)
1234
їїї print(-5.4)
-5.4
їїї print("Hello, world!")
Hello, world!
Ю. Астахов
Знакомство с языком Python

12. Python: Переменные
Переменные
Переменная  именованный участок памяти, указывающий на экземпляр данных.
Имя переменной выбирает программист.
Можно изменять значения переменных после задания начального значения.
Вывод переменных
їїї x, y = [-5, 2]
їїї x
-5
їїї x **= y
їїї print(x)
25
Ю. Астахов
Знакомство с языком Python

13. Python: Переменные
Правила именования
Должны начинаться с буквы или символа подчјркивания (_).
Должны состоять из букв, цифр или подчјркиваний.
Чувствительны к регистру.
Примеры правильных value _data vector1 ___
Примеры неправильных
1vector #data vector.1
Ю. Астахов
Знакомство с языком Python

14. Зарезервированные слова Python
Нельзя использовать зарезервированные слова в качестве переменных или идентификаторов and del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass yield def finally in print
Ю. Астахов
Знакомство с языком Python

15. Python: Численные выражения
Операторы
Оператор
Действие
+
Сложение
-
Вычитание
*
Умножение
/
Деление
//
Целочисленное деление
**
Возведение в степень
%
Остаток
Python 2.X
їїї 8/5 1
Python 3.X
їїї 8/5 1.6
Ю. Астахов
Знакомство с языком Python

16. Python: Численные выражения
їїї x = 77; kk = x % 5; kk
2
їїї y = 6.5 ** k; print(y)
42.25
Ю. Астахов
Знакомство с языком Python

17. Python: Приоритеты операторов
Приоритеты от высшего к низшему:
всегда учитываются скобки (),
возведение в степень **,
умножение, деление и остаток * / %,
сложение и вычитание + -,
порядок операторов слева направо.
Пример
їїї x = 1 + 2 * (3 - 4) / 5 ** 6; x
0.999872
Ю. Астахов
Знакомство с языком Python

18. Python: Смешивание integer и oat
Как происходит
1
Результат выполнения операций со значениями integer и oat будет всегда oat.
2
Значения integer преобразуются неявно в значения oat перед операцией.
Примеры
їїї 99/100 0.99
їїї 99/100.0 0.99
їїї 1+2*3/4-5
-2.5
Ю. Астахов
Знакомство с языком Python

19. Python: Типы данных
Описание
Переменные, значения и константы обладают своим типом.
Python различает разные типы. Например, числа и строки являются разными типами.
Для чисел оператор + означает сложение, а для строк 
совмещение.
Некоторые операции невозможны для различных типов.
Получить тип можно при помощи функции type().
Ю. Астахов
Знакомство с языком Python

20. Python: Числовые типы
Числовые типы
Целые и с плавающей точкой
Комплексные числа
Десятичные с фиксированной точностью
Дроби (рациональные числа)
Множества
Булевы (правда и ложь)
Типы из различных модулей расширений: векторы, библиотеки и прочие
Ю. Астахов
Знакомство с языком Python

21. Python: Числовые типы
Числовые типы
Вид
Интерпретация
1234, -24, 0, 99999999
Целые
1.23, 1., 3.14e-10, 4E210, 4.0e+210 С плавающей точкой
O0177,
Восьмеричная,
0x9,
шестнадцатиричная и
0b101010
двоичная записи
3+4j, 3.0+4.0j, 3J
Комплексные числа set('spam'), {1, 2, 3, 4}
Множества
Decimal('1.0'), Fraction(1, 3)
Десятичные и дробные типы bool(X), True, False
Булев тип и константы
Ю. Астахов
Знакомство с языком Python

22. Python: Типы данных
Примеры
їїї a = 9 * 5.5; type(a)

їїї text = "Hello, "+ "world!"; text; print(type(text))
'Hello, world!'

їїї text + 9
Traceback (most recent call last):
File ѕstdin> line 1, in
TypeError: Can't convert 'int' object to str implicitly
Явные преобразования
їїї i = 42; f = float(i); type(f)

їїї f/=9; f; int(f)
4.666666666666667 4
Ю. Астахов
Знакомство с языком Python

23. Python: Преобразование строковых типов
Можно использовать int() и oat() для преобразования между строками и числами
їїї str = "123"; type(str); print str + 1

Traceback (most recent call last):
File ѕstdin> line 1, in
TypeError: Can't convert 'int' object to str implicitly
Если в строке отсутствуют цифры, то преобразование завершается ошибкой
їїї str = "preved"; val = int(str)
Traceback (most recent call last):
File ѕstdin> line 1, in
ValueError: invalid literal for int() with base 10:
'preved'
Ю. Астахов
Знакомство с языком Python

24. Python: Строковые операторы
Оператор + выполняет стыковку строк
їїї print("text"+"123")
text123
Оператор * выполняет множественную стыковку строк
їїї print("text"*5)
texttexttexttexttext
Ю. Астахов
Знакомство с языком Python

25. Python: Списки (lists)
Чем являются списки
1
Упорядоченные наборы определјнных объјктов.
2
Доступ к элементам по числовому смещению.
3
Переменной длины, состоят из разнородных данных, допустимы вложения.
4
Относится к категории ѕизменяемая последовательностьї
(mutable sequence).
5
Можно охарактеризовать как массивы ссылок на объекты.
Ю. Астахов
Знакомство с языком Python

26. Python: Списки (lists)
Задание списков
їїї L1 = []; L2 = [123, ”text”, 1.23, {}]
їїї L3 = [”Текст”, 40.0, [”text1”, 5]]
їїї L4 = list(”spam”); L5 = list(range(-4, 4))
Обращение к элементам или группе элементов списка
їїї L2[1]; L3[2][1]; L5[3:5]; len(L4)
Стыковка, повторение
їїї L1 + L2; L5 * 3
Ю. Астахов
Знакомство с языком Python

27. Python: Методы списков
Методы расширения: добавление, расширение, вставка
їїї L3.append(4); L4.extend([6, 7, 8]); L5.insert(4, -4)
Методы поиска: индекс первого встретившегося, количество
їїї L5.index(-4); L5.count(-4)
Сортировка
їїї L5.sort()
Обращение, копирование, стирание
їїї L5.reverse(); L6=L5.copy(); L5.clear()
Манипуляции
їїї L6.pop(1); L6.remove(-4); del L6[2]
Ю. Астахов
Знакомство с языком Python

28. Python: Кортежи (tuples)
Чем являются кортержи
1
Упорядоченные наборы определјнных объјктов.
2
Доступ к элементам по числовому смещению.
3
Переменной длины, состоят из разнородных данных, допустимы вложения.
4
Относится к категории ѕфиксированная последовательностьї
(immutable sequence).
Ю. Астахов
Знакомство с языком Python

29. Python: Кортежи (tuples)
Задание кортежей
їїї T1=(); T2=tuple(2, 4, ”text”, (-6.0, 4.2)); type(T2)

їїї L7 = list(T2); print(L7)
[
2, 4, 'text', (-6.0, 4.2)]
їїї T2[0]=1
Traceback (most recent call last):
File ѕstdin> line 1, in
TypeError: 'tuple' object does not support item assignment
Ю. Астахов
Знакомство с языком Python

30. Python: Словари
Чем являются словари
1
Доступ к элементу по ключу, а не числовому смещению.
2
В отличие от списков не подразумевают упорядоченного доступа.
3
Переменной длины, состоят из разнородных данных, допустимы вложения.
4
Относится к категории ѕизменямое отображениеї (mutable mapping).
5
Хэшированный доступ реализован неявно (встроен в Python).
6
Аналогично спискам словари хранят ссылки на объекты, а не сами объекты (если явно не указано).
Ю. Астахов
Знакомство с языком Python

31. Python: Словари
Задание словарей
їїї D1={}; D2={”name”: ”Василий”, ”age”: 40}
їїї D3={”cto”: {”name”: ”Василий”, ”age”: 40}}
їїї D4=dict(name=”Василий”, age=40)
їїї D5=dict([(”name”, ”Василий”), (”age”, 40)])
Получение значения элемента
їїї D2[”name”]
Василий
їїї D3[”cto”][”age”]
40
Ю. Астахов
Знакомство с языком Python

32. Python: Методы словарей
Методы поиска: перечени ключей, значений, элементов
їїї D2.keys(); D2.values(); D2.items()
Копирование, стирание
їїї D6=D2.copy(); D2.clear()
Удаление пары ключзначение
їїї del D6[”age”]
Задание расширенной конструкцией
їїї D = {x: x * 2 for x in range(4)}; print(D)
{
0: 0, 1: 2, 2: 4, 3: 6}
Ю. Астахов
Знакомство с языком Python

33. Python: Ветвление
Пример программы с условным выполнением
їїї x = 5
їїї if x < 10:
їїї
print ”Меньше”
їїї if x > 20:
їїї
print ”Больше”
Отступы
В Python отступы определяют блоки (группы)
выражений. Группа выражений какого-либо логического блока имеет одинаковый отступ!
Ю. Астахов
Знакомство с языком Python

34. Python: Отступы
Работа с отступами
Отступ увеличивается для группировки выражений после if или циклов.
Отступ уменьшается на предыдущее значение (до if, for, while)
после окончания блока.
Пустые строки игнрорируются  они не затрагивают отступы.
Коментарии на строках игнорируются с учјтом отступа.
Не следует перемешивать оступы в виде пробелов с табуляторами.
Ю. Астахов
Знакомство с языком Python

35. Python: Вложенные условия
Пример
їїї x = 50
їїї if x > 1:
їїї
print(”More”)
їїї
if x < 100:
їїї
print(”Less”)
їїї print(”Done”)
Ю. Астахов
Знакомство с языком Python

36. Python: Условный оператор с двумя ветвями
Пример
їїї x = 50
їїї if x > 50:
їїї
print(”More”)
їїї else:
їїї
print(”Less”)
їїї print(”Done”)
Ю. Астахов
Знакомство с языком Python

37. Python: Условный оператор с множественными условиями
Пример
їїї x = 50
їїї if x > 50:
їїї
print(”More than 50”)
їїї elif x < 50:
їїї
print(”Less than 50”)
їїї else:
їїї
print(”Equal to 50”)
їїї print(”Done”)
Ю. Астахов
Знакомство с языком Python

38. Python: Операторы сравнения
Таблица операторов булевых выражений
Оператор Значение
<
Меньше, чем
<=
Меньше или равно, чему
==
Равно, чему
>=
Больше или равно, чему
>
Больше, чем
! =
Не равно, чему and
Логическое ѕИї
or
Логическое ѕИЛИї
=
Присвоение значения, а не сравнение
Ю. Астахов
Знакомство с языком Python

39. Python: Цикл с предусловием
Общий вид цикла while
їїї while условиееслиистина :
утверждения if условие : break if условие : continue
... else:
утверждения
Местоимение pass
їїї while True: pass
Ю. Астахов
Знакомство с языком Python

40. Python: Примеры цикла while
Пример с break и continue
їїї while True:
line = input( )
if line[0] == ”#”:
continue if line == ”done”:
break print(line)
їїї print("Done")
Ю. Астахов
Знакомство с языком Python

41. Python: Примеры цикла while
Пример с while...else
їїї x = [5, -7, 4]
їїї while x:
if x[0] == 10:
print('Found'); break else:
x=x[1:]
... else:
print('Not found')
Ю. Астахов
Знакомство с языком Python

42. Python: Совместный цикл
Общий вид цикла for
їїї for цель in объект :
утверждения
... if условие : break
... if условие : continue
їїї else:
утверждения
Простой пример
їїї for i in [5, ”abc”, 3, 2, 1]:
print(i)
Ю. Астахов
Знакомство с языком Python

43. Python: Диапазоны
Пример диапазона
їїї k = range(-4, 4, 2)
їїї type(k)

їїї for i in k: print(i)
-4
-2 0
2
Ю. Астахов
Знакомство с языком Python

44. Расширенные конструкции
Совмещение
їїї for a, b, c in [[1, 2, 3], [4, 5, 6]]:
print(a, b, c)
1 2 3 4 5 6
їїї for a, b in range(1, 3), range(5, 7): print(a, b)
1 2 5 6
Вложенные последовательности
їїї for [a, b], c in [[[1, 2], 3], [[4, 5], 6]]:
print(a, b, c)
1 2 3 4 5 6
Ю. Астахов
Знакомство с языком Python

45. Python: Функции
Функции
Встроенные функции поставляются как часть языка Python:
input(), type(), oat(),...
Импортирумые функции из внешних модулей.
Функции пользователя.
Импорт функции, импорт библиотеки
їїї from os import getcwd
їїї getcwd()
їїї import random
їїї random.uniform(-1, 1)
Общий вид задания пользовательской функции
їїї def имя (аргумент1, аргумент2,..., аргументN ):
утверждения return значение
Ю. Астахов
Знакомство с языком Python

46. Python: Особенности задания функций def работает во время запуска
їїї if условие :
def func():
їїї else:
def func():
їїї aliasfunc = func
їїї aliasfunc()
їїї func.attr = value
Ю. Астахов
Знакомство с языком Python

47. Примеры задания функций
Пример простой функции
їїї def times(x, y):
... return x * y
їїї times(3+4j, 5-8j)
(47-4j)
їїї times(”hi”, 5)
hihihihi
Ю. Астахов
Знакомство с языком Python

48. Python: Лямбдафункции
Общий вид
їїї lambda аргумент1,...,аргументN : выражение с использованием аргументов
ѕАнонимныеї функции
Отличие анонимных функций от обычный функций def:
lambda является выражением, а не утверждением. Могут появляться там, где запрещјн def. Если к функции можно обратиться по имени, то lambda только возвращает значение.
Тело лямбдафункции является одним выражением, а не группой утверждений.
Сравнение задания функций
їїї def func(x, y, z): return x + y + z
їїї f = lambda x, y, z: x + y + z
їїї func(2, 3, 4); f(2, 3, 4)
Ю. Астахов
Знакомство с языком Python

49. Пример ѕпрыгающих таблицї
Задание списков с действиями ѕпо требованиюї
їїї L=[lambda x: x ** 2,
lambda x: x ** 3,
lambda x: x ** 4]
їїї for f in L: print(f(2))
4 8
16
їїї print(L[0](3))
9
Ю. Астахов
Знакомство с языком Python

50. Python: Расширенная запись списков
Кратко
Расширенная запись создания списков применяет определјнное выражение или функцию к счјтным элементам (спискам, кортежам).
Список с чјтными значениями
їїї [x for x in range(1, 7) if x % 2 == 0]
їїї [x for x in (1, 2, 3, 4, 5, 6) if x % 2 == 0]
їїї list(filter((lambda x: x% 2 == 0), range(1, 7)))
[
2, 4, 6]
Ю. Астахов
Знакомство с языком Python

51. Пример реализации алгоритма обучения перцептрона
Метод коррекции ошибки (Агоритм Розенблатта)
Задача классификатора разделить бинарно классифицированный набор данных (метками +1 и -1) линейным разделителем.
Для N наблюдений, характеризуемых d атрибутами x n
= (
x
1
, ...,
x d
)
для n = (1, ..., N).
Решение о классификации состоит в нахождении весовых значений w
i так, чтобы одна группа векторов принадлежала одному из классов,
d i=1
w i
x i
<
b
(1)
а вторая  другому для заданного порогового значения b.
d i=1
w i
x i
>
b
(2)
Ю. Астахов
Знакомство с языком Python

52. Пример реализации алгоритма обучения перцептрона
Заменяя b на w
0
и вводя искусственную координату x
0
=
1 в векторы x
n можно записать формулу перцептронного разделителя h(x) = sign(
d i=0
w i
x i
) =
sign(w
T
x)
(3)
сводя задачу к подбору весов w на данном тренировочном наборе x с им соответствующим вектором классификации (y
1
, ...,
y
N
)
Если w подбираемый вектор, а x n
неверно классифицированная точка с w
T
x n
=
y n
, то вес обновляется до значения w + y n
x n
Ю. Астахов
Знакомство с языком Python

53. Пример реализации алгоритма обучения перцептрона
Пример
На [?1, 1] Ч [?1, 1] берутся две произвольные точки (x
1
,
y
1
)
и
(
x
2
,
y
2
)
, по ним задајтся вектор V = (A, B, C) в терминах
A + Bx + Cy = 0. Любая точка (x, y) принадлежит прямой, если
V
T
x = 0, где x = (1, x, y).
За ошибку принимается отношение числа неверно классифицированных точек к общему их количеству.
Ю. Астахов
Знакомство с языком Python

54. Python: ресурсы
Ресурсы World Wide Web https://www.python.org/  вебсайт Python (англ.)
https://www.python.org/about/success/  ѕИстории успехаї (англ.)
https://pypi.python.org/pypi  Python Package Index (англ.)
https://docs.python.org/3/  Онлайндокументация по языку (англ.)
http://ru.diveintopython.net/toc.html  устаревший учебник (рус.)
http://ru.wikibooks.org/wiki/Python  викиучебник (рус.)
Ю. Астахов
Знакомство с языком Python

55. Python: книги
Бумажные и электронные
Mark Lutz. Learning Python, Fifth Edition. O Reilly, 2013.
Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython. O Reilly, 2012.
Дэвид Бизли. Python. Подробный справочник.
СимволПлюс. 2010.
Ю. Астахов
Знакомство с языком Python


написать администратору сайта