Знакомство с языком Python Ю. Астахов 18 ноября 2014 г
Скачать 3.73 Mb.
|
Знакомство с языком 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 |