Лекция #5. Введение в язык программирования Python 3
Upcoming SlideShare
Loading in...5
×
 

Лекция #5. Введение в язык программирования Python 3

on

  • 458 views

Web-программирование ...

Web-программирование
Лекция #5. Введение в язык программирования Python 3

Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.

Statistics

Views

Total Views
458
Views on SlideShare
455
Embed Views
3

Actions

Likes
1
Downloads
17
Comments
0

1 Embed 3

http://www.slideee.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Лекция #5. Введение в язык программирования Python 3 Лекция #5. Введение в язык программирования Python 3 Presentation Transcript

  • WEB-ПРОГРАММИРОВАНИЕ Лекция #5. Введение в язык программирования Python 3 Омский государственный университет им. Ф. М. Достоевского Факультет компьютерных наук Яковенко К. С
  • 2 Python высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Поддерживаются несколько парадигм программирования: процедурное программирование объектно-ориентированное и в меньшей степени функциональное.
  • 3 Компании использующие Python и многие другие
  • 4 История развития языка программирования Python Python 1.0 - январь 1994 – Python 1.5 - 31 декабря 1997 – Python 1.6 - 5 сентября 2000 Python 2.0 - 16 октября 2000 – Python 2.1 - 17 апреля 2001 – Python 2.2 - 21 декабря 2001 – Python 2.3 - 29 июля 2003 – Python 2.4 - 30 ноября 2004 – Python 2.5 - 19 сентября 2006 – Python 2.6 - 1 октября 2008 – Python 2.7- 3 июля 2010 Python 3.0 - 3 декабря 2008 — Python 3.1 - 27 июня 2009 — Python 3.2 - 20 февраля 2011 — Python 3.3 - 29 сентября 2012 — Python 3.4 - 16 марта 2014
  • 5 PEP (Python Enhancement Proposal) — специально разработанный документ, содержащий информацию для сообщества Python или описание новой функции языка, его процессов или окружающей среды. PEP документ должен содержать краткое описание технических особенностей и обоснование выбора вводимой функции. Самый известный PEP8: Style Guide for Python Code
  • 6 Основы языка Типы данных Арифметические и логические операции Управляющие структуры ООП Обработка исключений Генераторы и декораторы
  • 7 Типы данных: Представление чисел Целочисленные типы – int(x, base=10) – целые числа – bool([x]) – логические значения Типы чисел с плавающей точкой – float([x]) – числа с плавающей точкой двойной точности – complex([real[, imag]]) – комплексные числа – decimal.Decimal(value="0", context=None) – числа фиксированной точности
  • 8 Представление чисел (примеры) Целые числа: >>> 14600926, 0b110111101, 0o67545336, 0xDECADE (14600926, 445, 14600926, 14600926) >>> int(14600926), int('14600926'), int('67545336', 8) (14600926, 14600926, 14600926) >>> int('DECADE', 16), int('110111101', 2), bool(14600926), bool() (14600926, 445, True, False) Числа с плавающей точкой: >>> 0.0, 5.4, -2.5, 8.9e-4 (0.0, 5.4,-2.5, 0.00089) >>> -89.5+2.125j, complex(-89.5, 2.125) ((-89.5+2.125j), (-89.5+2.125j)) >>> import decimal >>>decimal.Decimal('54321.0123456789 87654321') Decimal('54321.012345678987654321')
  • 9 Типы данных: Строки последовательность символов с произвольным доступом str(object='') >>> text = """Строки в тройных кавычках могут включать 'апострофы' и "кавычки" без лишних формальностей. Мы можем даже экранировать символ перевода строки благодаря чему данная конкретная строка будет занимать всего две строки.""" >>> a = "Здесь 'апострофы' можно не экранировать, а "кавычки" придется." >>> b = 'Здесь 'апострофы' придется экранировать, а "кавычки" не обязательно.'
  • 10 Unicode Все строки в Python 3 по умолчанию задаются в Unicode символах. str(object=b'', encoding='utf-8', errors='strict') В Python 2 используется функция unicode(object[, encoding[, errors]]) или спецификатор u перед строкой. >>> unicode("Привет","UTF-8") u'u041fu0440u0438u0432u0435u0442' >>> u'Привет' u'u041fu0440u0438u0432u0435u0442'
  • 11 Операции над строками Операторы сравнения <, <=, ==, !=, > и >=. Срезы строк, с помощью оператора доступа [ ] seq[start] – извлекает символ seq[start:end] – извлекает подстроку seq[start:end:step] – извлекает последовательность символов с шагом step Строковые методы .join .split .startswith .endswith .replace и т.д. Функции и операторы для работы с итерируемыми объектами (рассматриваются ниже)
  • 12 Форматирование строк str.format(*args,**kwargs) возвращает новую строку, замещая поля в контекстной строке соответствующими аргументами. Формат полей: {field_name} {field_name!conversion} {field_name:format_specification} {field_name!conversion:format_specification} Порядковый номер или имя аргумента Тип формы представления: строковая (а) или репрезентативная (r) Спецификатор формата для чисел и последовательностей Спецификатор формата задается собственным мини-языком (подробнее почитать здесь)
  • 13 Примеры работы со строками Вставка подстроки в строку: s = 'The waxwork man' s = s[:12] + 'wo' + s[12:] # результат 'The waxwork woman' Инвертирование строки s = s[::-1] # результат 'namow krowxaw ehT' Замена подстроки s = s.replace('woman','man') # результат 'The waxwork man' Разбиение на слова s = s.split('') # результат ['The','waxwork','man'] Форматирование '{who} turned {0} this year'.format(88, who="She") # результат 'She turned 88 this year'
  • 14 Типы данных: Последовательности В языке Python имеется пять встроенных типов последовательностей: list, bytearray, bytes, str, tuple Это одни из типов данных, поддерживающих оператор проверки на вхождение (in), функцию определения размера (len()), оператор извлечения срезов ([]) и возможность выполнения итераций.
  • 15 Типы данных: Множества — неупорядоченная коллекция из нуля или более ссылок указывающих на хешируемые объекты. class set([iterable]) class frozenset([iterable]) Хешируемые объекты имеют специальный метод __hash__(), на протяжении всего жизненного цикла объекта всегда возвращающий одно и то же значение, которые могут участвовать в операциях сравнения на равенство.
  • 16 Типы данных: Словари — неупорядоченная коллекция из нуля или более пар «ключ- значение», в которых в качестве ключей могут использоваться ссылки на хешируемые объекты, а в качестве значений – ссылки на объекты любого типа. class dict(**kwargs) class dict(mapping, **kwargs) class dict(iterable, **kwargs) >>> d = {"root": 18, "blue": [75, "R", 2], 21: "venus", -14: None, … "mars": "rover", (4, 11): 18, 0: 45} >>> d[21] = 'Hello World!' >>> d[21] 'Hello World!'
  • 17 Типы данных: Ссылки В языке Python нет переменных как таковых – вместо них используются ссылки на объекты. objectReference = value a = 7 a 7 a = 7 b = a a 7 b a = 7 b = a a = “Liberty” a 7 b “Liberty” — object references — object in memory
  • 18 Арифметические и логические операторы ● Оператор идентичности is, is not ● Операторы сравнения <, <=, ==, !=, >=, > ● Оператор членства in, not in ● Логические операторы and, or и not. ● Простые арифметические операторы +, -, *, / ● Комбинированные операторы присваивания +=, -=, *=, /=
  • 19 Условное ветвление Общая схема условной инструкции if boolean_expression1: suite1 elif boolean_expression2: suite2 … elif boolean_expressionN: suiteN else: else_suite Условное выражение: expression1 if boolean_expression else expression2
  • 20 Циклы Существует только цикл с предусловием: while boolean_expression: while_suite else: else_suite Цикл обхода итерируемого множества for expression in iterable: for_suite else: else_suite Цикл for в Python и С++ или Java не являются эквивалентными конструкциями.
  • 21 Обработка исключений try: try_suite except exception_group1 as variable1: except_suite1 except exception_groupN as variableN: except_suiteN else: else_suite finally: finally_suite Порождение исключений: raise exception(args) raise
  • 22 Если этого не достаточно, можно создать собственное: class exceptionName(baseException): pass baseException – либо класс Exception, либо его потомок. object BaseException Exception ArithmeticError Exception EnvironmentError EOFError LookupError ValueError IOError OSError IndexError KeyError Встроенные исключения
  • 23 Функции Глобальные и локальные функции: def functionName(parameters): suite return value Лямбда-функции: lambda parameters: expression
  • 24 Функции: примеры использования Площадь треугольника по формуле Герона: import math def heron(a, b, c, unit='meters'): s = (a + b + c) / 2.0 area = math.sqrt(s * (s - a) * (s - b) * (s - c)) return '{0} {1}'.format(area, unit) heron(25, 24, 7) # вернет '84.0 meters' heron(25, 24) # породит исключение TypeError heron(25, c=7, b=24, unit='sm') # вернет '84.0 sm' heron(*[25, 24, 7], unit='mm') # вернет '84.0 mm'
  • 25 Генераторы Функции-генераторы def generator(parameters): suite yield value suite Генераторы списков [expression for item in iterable if condition] Генераторы словарей {keyexpression: valueexpression for key, value in iterable if condition}
  • Декораторы функций и методов Декоратор - это функция, которая принимает функцию или метод в качестве единственного аргумента и возвращает новую функцию или метод, включающую декорированную функцию или метод, с дополнительными функциональными возможностями. def positive_result(function): def wrapper(*args, **kwargs): result = function(*args, **kwargs) assert result >= 0, function.__name__ + "() result isn't >= 0" return result return wrapper @positive_result def discriminant(a, b, c): return (b ** 2) - (4 * a * c) discriminant(1, 8, 7) # вывод 36 discriminant(5, 6, 7) # исключение AssertionError: discriminant() result isn't >= 0
  • 27 Объектно-ориентированная концепция Абсолютно все в Python является объектом, унаследованым от базового класса object. Классы в Python поддерживают: Методы, свойства и атрибуты Множественное наследование и специализацию классов Полиморфизм Используется механизм утиной типизации Классы в Python не поддерживают: Перегрузку методов Управление доступом к данным
  • 28 Классы Синтаксис опрделения class className(base_classes): suite class className(object): classAttr = value def __new__(cls, *args, **kwargs): suite def __init__(self, *args, **kwargs): suite def __del__(self): suite Инициализация объекта classInstance = className(parameters) del classInstance конструктор деструктор без гарантии вызова
  • 29 Классы: использование свойств Свойство – это элемент данных объекта, доступ к которым оформляется как доступ к переменной экземпляра, но само обращение неявно обслуживается встроенными методами. class A(object): def __init__(self): self._x = None @property def x(self): return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
  • 30 Классы: вызов родительских методов осуществляется с помощью функции super([type[, object-or-type]]) class A(object): pass class B(object): pass class C(B,A): def __init__(self, *args, **kwargs): # self.__class__.__mro__ = [C, B, A, objects] super().__init__(*args, **kwargs) # super(C, self).__init__() => B.__init__(self) # super(B, self).__init__() => A.__init__(self) # super(A, self).__init__() => object.__init__(self) Вычисление метода строится на основе алгоритма определения порядка разрешения методов MRO C3
  • 31 Модули и пакеты Модуль в Python – это обычный файл с расширением .ру Импортирование модулей: import importable import importablel, importable2, …, importableN import importable as preferred_name Пакет – это простой каталог, содержащий множество модулей и файл с именем __init__ .ру. Импортирование из моделуй и пакетов: from importable import object as preferred_name from importable import object1, object2, …, objectN from importable import (object1, object2, object3, …, objectN) from importable import *
  • 32 Обзор стандартной библиотеки string – содержит ряд полезных констант и классов для обработки строк re – модуль для использования регулярных выражений optparse, getopt – работа с аргументами командной строки math, cmath, random – математические библиотеки calendar, datetime, time – работа с датой и временем os – платформо независимый доступ к средствам ОС shutil – высокоуровневые функции для работы с каталогами и файлами и еще составе свыше 200 пакетов и модулей.
  • 33 Сильные стороны Python Удобный в разработке – высокая скорость разработки – простой синтаксис – набор мощных встроенных инструментов Свободная лицензия Кросплатформенность Легко интегрируемый с другими ЯП/платформами The Zen of Python, by Tim Peters import this
  • 34 Ограничения Python Отсутствие типизации Скорость исполнения кода GIL – Global Interpreter Lock
  • 35 Яковенко Кирилл Сергеевич kirill.yakovenko@gmail.com Омский государственный университет им. Ф. М. Достоевского Факультет компьютерных наук