Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Roman BrovkoСинтаксис объявления функций. Упаковка и распаковка аргументов. Ключевые аргументы и аргументы по умолчанию. Распаковка и оператор присваивания. Области видимости, правило LEGB, операторы global и nonlocal. Функциональное программирование, анонимные функции. Функции map, filter и zip. Генераторы списков, множеств и словарей. Немного о PEP 8.
Лекция 5. Встроенные коллекции и модуль collections.Roman BrovkoИ снова встроенные коллекции: кортеж, список, множество, словарь - обход в глубину, обзор методов, примеры. Почти всё про модуль collections: именованные кортежи, счётчики, defaultdict, OrderedDict.
Лекция 4. Строки, байты, файлы и ввод/вывод.Roman BrovkoСтроковые литералы и сырые строки. Строки и Юникод. Основные методы работы со строками. Модуль string. Байты. Кодировки. Файлы и файловые объекты. Методы работы с файлами. Модуль io
Лекция 10. Классы 2.Roman BrovkoДескрипторы: что-как-зачем. Конструктор __new__, класс type и метаклассы. Наследование встроенных типов. Модули abc и collections.abc.
Лекция 12. Быстрее, Python, ещё быстрее.Roman BrovkoИзмерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Лекция 3. Декораторы и модуль functools.Roman BrovkoСинтаксис декораторов. Декораторы с аргументами, без аргументов. Примеры использования декораторов. Модуль functools.
Лекция #7. Django ORMЯковенко КириллWeb-программирование
Лекция #7. Django ORM
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция 1. Начало.Roman BrovkoКто, когда и зачем придумал язык Python. Интерпретаторы языка. Синтаксис языка с высоты птичьего полёта. Интерактивная оболочка IPython.
Лекция 9. Модули, пакеты и система импорта.Roman BrovkoМодули. Операторы import и from ... import. Пакеты. Относительный и абсолютный импорт. __init__-фасад. И снова оператор import - обход в глубину.
Лекция 11. Тестирование.Roman BrovkoЗачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman BrovkoДва протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.
Профилирование и отладка DjangoVladimir RudnyhПри написании программы, разработчик примерно представляет себе, как должна работать его программа. Но не всегда его ожидания соответствуют действительности — приложения тормозят, потребляют много ресурсов и вообще ведут себя не так, как задумывалось, особенно под большой нагрузкой. В своём докладе я покажу, как заглянуть "под капот" ваших приложений на Python (и Django в частности): какие способы профилирования бывают и когда их можно использовать, расскажу об отладке приложений и различных инструментах, которые помогают разработчику при разработке.
Лекция 13. Многопоточность и GILRoman BrovkoМодули threading, queue и concurrent.futures. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio. Модуль multiprocessing.
Лекция 6. Классы 1.Roman BrovkoСинтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Лекция 7. Исключения и менеджеры контекста.Roman BrovkoИсключения, зачем они нужны и как их обрабатывать. Встроенные исключения и базовые классы BaseException и Exception. Операторы try...except..else..finally. Менеджеры контекста и модуль contextlib.
Python dict: прошлое, настоящее, будущееdelimitryПрезентация со встречи сообщества SPb Python Interest Group рассказывающая об устройстве словарей в Python.
В презентации рассмотрена работа словаря в CPython 2.x, словаря в CPython 3.x, а также рассмотрены изменения в CPython 3.6.
Помимо CPython рассмотрены версии словаря в альтернативных реализациях Python, таких как PyPy, IronPython и Jython.
Оптимизация производительности PythonPyNSKСлайды с доклада на Codefest 2016
От Александра Маршалова
В докладе были рассмотрены основные способы микро и не микро оптимизаций для Python
Объектно-ориентированное программирование. Лекции 9 и 10Dima DzubaВ лекциях рассказывается об основных контейнерах STL. Рассматриваются принципы устройства литераторов и локаторов памяти.
Лекция #6. Введение в Django web-frameworkЯковенко КириллWeb-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция #1. Основы Web-технологийЯковенко КириллWeb-программирование
Лекция #1. Основы Web-технологий.
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция 3. Декораторы и модуль functools.Roman BrovkoСинтаксис декораторов. Декораторы с аргументами, без аргументов. Примеры использования декораторов. Модуль functools.
Лекция #7. Django ORMЯковенко КириллWeb-программирование
Лекция #7. Django ORM
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция 1. Начало.Roman BrovkoКто, когда и зачем придумал язык Python. Интерпретаторы языка. Синтаксис языка с высоты птичьего полёта. Интерактивная оболочка IPython.
Лекция 9. Модули, пакеты и система импорта.Roman BrovkoМодули. Операторы import и from ... import. Пакеты. Относительный и абсолютный импорт. __init__-фасад. И снова оператор import - обход в глубину.
Лекция 11. Тестирование.Roman BrovkoЗачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman BrovkoДва протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.
Профилирование и отладка DjangoVladimir RudnyhПри написании программы, разработчик примерно представляет себе, как должна работать его программа. Но не всегда его ожидания соответствуют действительности — приложения тормозят, потребляют много ресурсов и вообще ведут себя не так, как задумывалось, особенно под большой нагрузкой. В своём докладе я покажу, как заглянуть "под капот" ваших приложений на Python (и Django в частности): какие способы профилирования бывают и когда их можно использовать, расскажу об отладке приложений и различных инструментах, которые помогают разработчику при разработке.
Лекция 13. Многопоточность и GILRoman BrovkoМодули threading, queue и concurrent.futures. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio. Модуль multiprocessing.
Лекция 6. Классы 1.Roman BrovkoСинтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Лекция 7. Исключения и менеджеры контекста.Roman BrovkoИсключения, зачем они нужны и как их обрабатывать. Встроенные исключения и базовые классы BaseException и Exception. Операторы try...except..else..finally. Менеджеры контекста и модуль contextlib.
Python dict: прошлое, настоящее, будущееdelimitryПрезентация со встречи сообщества SPb Python Interest Group рассказывающая об устройстве словарей в Python.
В презентации рассмотрена работа словаря в CPython 2.x, словаря в CPython 3.x, а также рассмотрены изменения в CPython 3.6.
Помимо CPython рассмотрены версии словаря в альтернативных реализациях Python, таких как PyPy, IronPython и Jython.
Оптимизация производительности PythonPyNSKСлайды с доклада на Codefest 2016
От Александра Маршалова
В докладе были рассмотрены основные способы микро и не микро оптимизаций для Python
Объектно-ориентированное программирование. Лекции 9 и 10Dima DzubaВ лекциях рассказывается об основных контейнерах STL. Рассматриваются принципы устройства литераторов и локаторов памяти.
Лекция #6. Введение в Django web-frameworkЯковенко КириллWeb-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция #1. Основы Web-технологийЯковенко КириллWeb-программирование
Лекция #1. Основы Web-технологий.
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция #3. Введение в языки разметки web-страницЯковенко КириллWeb-программирование
Лекция #3. Введение в языки разметки web-страниц
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция #4. Каскадные таблицы стилейЯковенко КириллWeb-программирование
Лекция #4. Каскадные таблицы стилей
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Лекция #2. Принцип организации World Wide WebЯковенко КириллWeb-программирование
Лекция #2. Организация взаимодействия в World Wide Web
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Почему Rust стоит вашего вниманияMichael PankovВидео доклада: https://www.youtube.com/watch?v=slnQBoxsHPU
Rust - системный язык программирования, который быстро исполняется, предотвращает почти все падения, и устраняет гонки по данным.
Как он этого достигает? Про это доклад.
Rust All Hands Winter 2011Patrick WaltonRust is a new systems programming language designed for safety, concurrency, and speed. It uses a borrow checker to ensure memory safety and avoid use-after-free bugs, and enables safe concurrency through message passing and ownership rules. The Rust team has been redesigning and implementing the language over the past year based on lessons learned from writing the compiler in Rust. Their goals are to have a memory-safe, concurrent language that achieves performance comparable to C++. They plan to use Rust for the parallel engine of the Servo browser project.
Магия в Python: Дескрипторы. Что это?PyNSKДокладчик:
Владимир Донец (kwimba.ru)
Описание: Слышали про магию в Python? Одно из магических заклинаний называется дескрипторы. Мощная фича языка, которая позволяет определять свое поведение атрибута объекта при доступе к этому атрибуту.
Сложно звучит? А вы знали, что дескрипторами уже наверняка пользовались, если хотя бы раз писали на Python. Я расскажу о том, что такое дескрипторы и как их осознанно можно применять в собственном коде.
Мой Python всегда со мной!PyNSKВ докладе мы рассмотрим создание переносимого дистрибутива Python для любых нужд и операционных систем (Windows & Linux). Познакомимся с существующими и альтернативными решениями. Сравним их достоинства и недостатки.
Докладчик: Григорий Кареев (Odin)
Видео: https://www.youtube.com/watch?v=fvBJG_IKvaQ
Основы программирования на rubyEvgeny SmirnovРассказывается об основах программирования на ruby: переменные, типы переменных, операции и пр. В конце приводятся блок-схема решения линейного уравнения.
Фронтенд в ЯндексеYandexДоклад об особенностях фронтенд-разработки. Речь пойдет о специфике разработки интерфейсов в больших и маленьких компаниях и о том, что должен знать хороший фронтенд-разработчик. Вы узнаете также, как устроен процесс разработки в Яндексе и какие интерфейсные задачи мы решаем.
An introduction to Rust: the modern programming language to develop safe and ...Claudio CapobiancoRust is a young programming language developed by Mozilla with the open source community support. According to a survey of StackOverflow, in 2016 was the most loved among developers language! The goal of Rust is to combine control and performances, that is, operate at low level with high-level constructs. The actual applications vary from operating system to web development. Rust natively includes tools for Agile development, such as dependency management, testing and much more. The gap with other popular languages is filling up quickly thanks to the community, very active and fantastic :)
In this introductory presentation we will discuss the characteristics that make Rust unique, including the concepts of Ownership, Borrowing, and Lifetimes.
These slide has be presented for a talk in BIC Lazio Casilina, that has been also the first meetup of Rust Rome!
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковSergey PlatonovНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)-ДоминантаМатвеенко Сергей - Ведущий разработчик / Positive Technologies / Россия, Санкт-Петербург
Декларативное программирование на Python, метаклассы, YAML и прочие неприятности.
Популярные применения. Подводные камни.
http://www.it-sobytie.ru/events/2040
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python MeetupВ своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Convert this: peculiarities of cross-platform mobile game development at VizorDevGAMM ConferenceRoman Chehowski, Game Engine Architect, Vizor Interactive
CSS глазами машинRoman DvornovБольшинство считает CSS чем-то простым и не заслуживающим внимания. Но за мнимой простотой кроется большая сложность и огромный пласт проблем, не имеющих пока решения. Современный CSS с его объёмами, новыми фичами, разной поддержкой и багами браузеров, уже почти не поддается анализу человеком. Для этого появляются программы, которые разбирают CSS на атомы, анализируют и помогают сделать его лучше. Как к этому прийти, где мы сейчас и что ещё предстоит сделать.
Solit 2014, EcmaScript 6 in Action, Трухин Юрий solitЮрий Трухин, Россия. Эксперт по облачным технологиям хостинговой компании InfoboxCloud. В прошлом – обладатель статуса Microsoft Most Valuable Professional. Гик, стратег, разработчик. Подробнее на trukhin.com
«Обзор InfoboxCloud для разработчиков». Development секция. Высокий уровень подготовки. Для разработчиков.
В этом докладе будет рассказано об устройстве InfoboxCloud из первых рук, о деталях внутренней реализации, о том, какую пользу несет облако для разработчиков и о будущем InfoboxCloud. Будут рассмотрены 2 кита облачных технологий: IaaS и PaaS без vendor-lock. Отличная возможность спросить обо всём, что касается PaaS/IaaS непосредственно архитектора и разработчика этих систем.
«EcmaScript 6 in Action». Development секция. Для разработчиков.
Поговорим о том, как жизнь разработчиков изменится с приходом нового стандарта.
Scala для всех (РИФ 2015)Арсений ЖижелевКраткое введение в Scala для разработчиков на других языках. Рассмотрены несколько простых программ, написанных с использованием красивых возможностей Scala.
8 встреча — Язык программирования Python (В. Ананьев)Smolensk Computer Science Club8 встреча Smolensk Computer Science Club
Презентация Владислава Ананьева про язык программирования Python
ВКонтакте: http://vk.com/scsc8
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыPositive Development User GroupВыступление Константина Панарина, посвященное анализу бинарного кода, на встрече PDUG Meetup: J'adore hardcore 20 декабря 2016 года.
Лекция #5. Введение в язык программирования Python 3
1. WEB-ПРОГРАММИРОВАНИЕ
Лекция #5. Введение в язык программирования Python 3
Омский государственный университет им. Ф. М. Достоевского
Факультет компьютерных наук
Яковенко К. С
2. 2
Python
высокоуровневый язык программирования общего назначения,
ориентированный на повышение производительности
разработчика и читаемости кода.
Поддерживаются несколько парадигм программирования:
процедурное программирование
объектно-ориентированное
и в меньшей степени функциональное.
4. 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. 5
PEP (Python Enhancement Proposal)
— специально разработанный документ, содержащий
информацию для сообщества Python или описание
новой функции языка, его процессов или окружающей
среды.
PEP документ должен содержать краткое описание
технических особенностей и обоснование выбора
вводимой функции.
Самый известный PEP8: Style Guide for Python Code
7. 7
Типы данных:
Представление чисел
Целочисленные типы
– int(x, base=10) – целые числа
– bool([x]) – логические значения
Типы чисел с плавающей точкой
– float([x]) – числа с плавающей точкой двойной точности
– complex([real[, imag]]) – комплексные числа
– decimal.Decimal(value="0", context=None) – числа
фиксированной точности
9. 9
Типы данных: Строки
последовательность символов с произвольным доступом
str(object='')
>>> text = """Строки в тройных кавычках могут включать 'апострофы' и
"кавычки" без лишних формальностей. Мы можем даже экранировать
символ перевода строки благодаря чему данная конкретная строка
будет занимать всего две строки."""
>>> a = "Здесь 'апострофы' можно не экранировать, а "кавычки"
придется."
>>> b = 'Здесь 'апострофы' придется экранировать, а "кавычки" не
обязательно.'
10. 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. 11
Операции над строками
Операторы сравнения <, <=, ==, !=, > и >=.
Срезы строк, с помощью оператора доступа [ ]
seq[start] – извлекает символ
seq[start:end] – извлекает подстроку
seq[start:end:step] – извлекает последовательность символов
с шагом step
Строковые методы
.join .split .startswith .endswith .replace и т.д.
Функции и операторы для работы с итерируемыми
объектами (рассматриваются ниже)
12. 12
Форматирование строк
str.format(*args,**kwargs)
возвращает новую строку, замещая поля в контекстной строке
соответствующими аргументами.
Формат полей:
{field_name}
{field_name!conversion}
{field_name:format_specification}
{field_name!conversion:format_specification}
Порядковый номер или
имя аргумента
Тип формы представления:
строковая (а) или
репрезентативная (r)
Спецификатор формата для
чисел и последовательностей
Спецификатор формата задается собственным мини-языком (подробнее почитать здесь)
13. 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. 14
Типы данных: Последовательности
В языке Python имеется пять встроенных типов
последовательностей:
list, bytearray, bytes, str, tuple
Это одни из типов данных, поддерживающих оператор
проверки на вхождение (in), функцию определения
размера (len()), оператор извлечения срезов ([]) и
возможность выполнения итераций.
15. 15
Типы данных: Множества
— неупорядоченная коллекция из нуля или более ссылок
указывающих на хешируемые объекты.
class set([iterable]) class frozenset([iterable])
Хешируемые объекты имеют специальный метод __hash__(), на
протяжении всего жизненного цикла объекта всегда
возвращающий одно и то же значение, которые могут участвовать
в операциях сравнения на равенство.
16. 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. 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. 18
Арифметические и логические
операторы
●
Оператор идентичности is, is not
●
Операторы сравнения <, <=, ==, !=, >=, >
●
Оператор членства in, not in
●
Логические операторы and, or и not.
●
Простые арифметические операторы +, -, *, /
●
Комбинированные операторы присваивания +=, -=, *=, /=
19. 19
Условное ветвление
Общая схема условной инструкции
if boolean_expression1:
suite1
elif boolean_expression2:
suite2
…
elif boolean_expressionN:
suiteN
else:
else_suite
Условное выражение:
expression1 if boolean_expression else expression2
20. 20
Циклы
Существует только цикл с предусловием:
while boolean_expression:
while_suite
else:
else_suite
Цикл обхода итерируемого множества
for expression in iterable:
for_suite
else:
else_suite
Цикл for в Python и С++ или Java не являются
эквивалентными конструкциями.
22. 22
Если этого не достаточно, можно создать собственное:
class exceptionName(baseException): pass
baseException – либо класс Exception, либо его потомок.
object
BaseException
Exception
ArithmeticError
Exception
EnvironmentError EOFError LookupError ValueError
IOError OSError IndexError KeyError
Встроенные исключения
23. 23
Функции
Глобальные и локальные функции:
def functionName(parameters):
suite
return value
Лямбда-функции:
lambda parameters: expression
24. 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'
26. Декораторы функций и методов
Декоратор - это функция, которая принимает функцию или метод в качестве
единственного аргумента и возвращает новую функцию или метод,
включающую декорированную функцию или метод, с дополнительными
функциональными возможностями.
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. 27
Объектно-ориентированная концепция
Абсолютно все в Python является объектом, унаследованым
от базового класса object.
Классы в Python поддерживают:
Методы, свойства и атрибуты
Множественное наследование и специализацию классов
Полиморфизм
Используется механизм утиной типизации
Классы в Python не поддерживают:
Перегрузку методов
Управление доступом к данным
28. 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. 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. 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. 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. 32
Обзор стандартной библиотеки
string – содержит ряд полезных констант и классов для
обработки строк
re – модуль для использования регулярных выражений
optparse, getopt – работа с аргументами командной строки
math, cmath, random – математические библиотеки
calendar, datetime, time – работа с датой и временем
os – платформо независимый доступ к средствам ОС
shutil – высокоуровневые функции для работы с каталогами и
файлами
и еще составе свыше 200 пакетов и модулей.
33. 33
Сильные стороны Python
Удобный в разработке
– высокая скорость разработки
– простой синтаксис
– набор мощных встроенных инструментов
Свободная лицензия
Кросплатформенность
Легко интегрируемый с другими ЯП/платформами
The Zen of Python, by Tim Peters
import this