Разделы презентаций


Москва, 2018 Информационные технологии Основы программирования на Python 3 Каф

Содержание

Лекция 1. Основы работыВведениеИнтерпретатор Python и среды разработкиОсновные понятияАнализаторы кодаСтруктура кодаМодулиДоступ к документации

Слайды и текст этой презентации

Слайд 1Москва, 2018
Информационные
технологии
Основы
программирования
на Python 3
Каф. ИКТ РХТУ им.

Д.И. Менделеева Ст. преп. Васецкий А.М.

Москва, 2018Информационные технологииОсновы программирования на Python 3Каф. ИКТ РХТУ им. Д.И. Менделеева Ст. преп. Васецкий А.М.

Слайд 3Лекция 1. Основы работы
Введение
Интерпретатор Python и среды разработки
Основные понятия
Анализаторы кода
Структура

кода
Модули
Доступ к документации


Лекция 1. Основы работыВведениеИнтерпретатор Python и среды разработкиОсновные понятияАнализаторы кодаСтруктура кодаМодулиДоступ к документации

Слайд 4Список источников. Книги
Изучаем Python. Программирование игр, визуализация данных, веб-приложения. —

СПб.: Питер, 2017. — 496 с.: ил. — (Серия «Библиотека

программиста»).
Рейтц К., Шлюссер Т. Автостопом по Python. — СПб.: Питер, 2017. — 336 с.: ил. — (Серия «Бестселлеры O’Reilly»).
Лутц М. Изучаем Python, 4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 1280 с., ил.
Прохоренок Н. А., Дронов В. А., «Python 3. Самое необходимое» — СПб.: БХВ-Петербург. – 2016, 464 с
Прохоренок Н.А. Дронов В. А., «Python 3 и PyQt. Разработка приложений» — СПб.: БХВ-Петербург. – 2016, 832 с.
Любанович Б: Простой Python. Современный стиль программирования. – СПб.: Питер, – 2016, 480 с.
Васецкий А. М., Красильников И.В., Информационные технологии. Введение в язык программирования Python : учеб. пособие. – М. : РХТУ им. Д. И. Менделеева, 2019. – 140 с.



Список источников. КнигиИзучаем Python. Программирование игр, визуализация данных, веб-приложения. — СПб.: Питер, 2017. — 496 с.: ил.

Слайд 5Сайты
https://docs.python.org/3/ – Оригинальная документация
http://pythonicway.com
http://pythonz.net
https://tproger.ru/tag/python/
https://pythonworld.ru
http://pythontutor.ru
https://pythoner.name

– перевод документации
https://wiki.python.org/moin/PythonEditors - список редакторов Python

Сайтыhttps://docs.python.org/3/ – Оригинальная документация http://pythonicway.com http://pythonz.net https://tproger.ru/tag/python/ https://pythonworld.ru http://pythontutor.ru https://pythoner.name – перевод документацииhttps://wiki.python.org/moin/PythonEditors - список редакторов Python

Слайд 6Индекс языков программирования
https://tiobe.com/tiobe-index/

Индекс языков программированияhttps://tiobe.com/tiobe-index/

Слайд 71. Введение
Python – язык высокого уровня
Синтаксис языка Python минималистический и

гибкий.
На нём можно составлять простые и эффективные программы.
Стандартная библиотека

для этого языка содержит множество полезных функций, что значительно облегчает процесс создания программ.
Язык Python поддерживает несколько парадигм программирования, включая структурное, объектно-ориентированное и функциональное программирование.
1. ВведениеPython – язык высокого уровняСинтаксис языка Python минималистический и гибкий. На нём можно составлять простые и

Слайд 8Применение Python
разработка сценариев для работы с Web и Intеnеt-приложений;
сетевое программирование;
средства

поддержка технологий HTML и XML;
приложения для работы с электронной почтой

и поддержки Intеmеt,
Протоколов приложения для обслуживания всевозможных баз данных;
программы для научных расчетов;
приложения с графическим интерфейсом;
создание игр и компьютерной графики,
Применение Pythonразработка сценариев для работы с Web и Intеnеt-приложений;сетевое программирование;средства поддержка технологий HTML и XML;приложения для работы

Слайд 9Особенности Python
Python относится к интерпретируемым языкам программирования, т.е. код выполняется

с помощью специальной программы-интерпретатора.
Интерпретатор выполняет программный код построчно (с предварительным

анализом).
Иногда исходный программный код компилируется в промежуточный код, и этот промежуточный код выполняется непосредственно интерпретатором
Ошибки выявляются на этапе выполнения и скорость работы меньше, чем компилируемых языках.
Преимуществом является большая скорость разработки, т.к. меньше времени тратится на компиляцию

Особенности PythonPython относится к интерпретируемым языкам программирования, т.е. код выполняется с помощью специальной программы-интерпретатора.Интерпретатор выполняет программный код

Слайд 10Реализации Python
Python – это спецификация для языка, которая может быть

реализована множеством разных способов
CPython (http://www.python.org) – базовая реализация Python, написанная

на языке С.
Stackless Python (https://bitbucket.org/stackless-dev/stackless/wiki/Home ) – это обычный вариант CPython Эта версия языка имеет патч, отвязывающий интерпретатор Python от стека вызовов, что позволяет изменять порядок выполнения кода
Реализации PythonPython – это спецификация для языка, которая может быть реализована множеством разных способовCPython (http://www.python.org) – базовая

Слайд 11Реализации Python (продолжение)
PyPy (http://pypy.org/ ) – это интерпретатор Python, реализованный

в ограниченном подмножестве статически типизированных языков Python (которое называется RPython),

что позволяет выполнить оптимизацию.
В данный момент PyPy быстрее CPython более чем в пять раз.
Реализации Python (продолжение)PyPy (http://pypy.org/ ) – это интерпретатор Python, реализованный в ограниченном подмножестве статически типизированных языков Python

Слайд 12Jython
Jython (http://www.jython.org/ ) – реализация интерпретатора Python, компилирующая код Python

в байт-код Java, который затем выполняется JVM (Java Virtual Machine).

Дополнительно он может импортировать и использовать любой класс Java в качестве модуля Python
Jython в данный момент поддерживает версии Python вплоть до Python 2.7 (http://bit.ly/jython-supports-27 )
JythonJython (http://www.jython.org/ ) – реализация интерпретатора Python, компилирующая код Python в байт-код Java, который затем выполняется JVM

Слайд 13Python под .NET
IronPython (http://ironpython.net/ ) – это реализация Python для

фреймворка .NET. Она может использовать библиотеки, написанные как на Python,

так и с помощью .NET, а также предоставлять доступ к коду Python другим языкам фреймворка .NET.
IronPython поддерживает версию Python 2.7
PythonNet – (http://pythonnet.github.io/ ) – пакет, который предоставляет почти бесшовную интеграцию оригинально установленного Python и общеязыковой среды выполнения .NET.
Такой подход противоположен подходу, которым пользуется IronPython. Т.е. PythonNet и IronPython дополняют друг друга.
Python под .NETIronPython (http://ironpython.net/ ) – это реализация Python для фреймворка .NET. Она может использовать библиотеки, написанные

Слайд 14Прочие реализации
Skulpt (http://www.skulpt.org/ ) – реализация Python на JavaScript.
Skulpt

поддерживает большую часть функциональности версий Python 2.7 и Python 3.3.
MicroPython

(https://micropython.org/ ) –реализация Python 3, оптимизированная для микроконтроллеров. Поддерживает 32-битные процессоры ARM, имеющие набор инструкций Thumb v2.
Прочие реализацииSkulpt (http://www.skulpt.org/ ) – реализация Python на JavaScript. Skulpt поддерживает большую часть функциональности версий Python 2.7

Слайд 15Python в разных операционных системах
Поддержка Python уже установлена на большинстве

компьютеров Linux
Python в системах Windows и MacOS требует установки.
Требуется скачать

соответствующий пакет с http://python.org/download/ и установить его.
Для научных расчётов наиболее удобен дистрибутив «Anaconda» https://www.anaconda.com/download/
Примечание: Anaconda не любит, когда имя пользователя написано русскими буквами, поэтому придётся создать нового пользователя, в имени которого все буквы английские, и дальнейшую работу вести от имени этого пользователя.
Python в разных операционных системахПоддержка Python уже установлена на большинстве компьютеров LinuxPython в системах Windows и MacOS

Слайд 16Набор кода
Сам код набирается в любом текстовом редакторе, либо в

среде программирования.
Notepad++ (пример)

Набор кодаСам код набирается в любом текстовом редакторе, либо в среде программирования.Notepad++ (пример)

Слайд 17Проект "Jupyter"
Jupyter Notebook – командная оболочка для интерактивных вычислений. Может

использоваться не только с Python, но и с другими языками

программирования: Julia, R, Haskell и Ruby.
Часто используется для работы с данными, статистическим моделированием и машинным обучением.
Кроме того, это удобный инструмент для создания красивых аналитических отчетов, поскольку он позволяет хранить вместе код, изображения, комментарии, формулы и графики
Подробнее см.
http://devpractice.ru/python-lesson-6-work-in-jupyter-notebook/
https://tproger.ru/translations/jupyter-notebook-python-3/
https://habrahabr.ru/company/wunderfund/blog/316826/
http://jupyter.org/
Проект

Слайд 18Пример документа Jupyter

Пример документа Jupyter

Слайд 192. Интегрированные среды разработки
IDE: Интегрированная среда разработки (англ. Integrated Development

Environment)
PyCharm
PyDev
WingWare
Komodo IDE
Eric
Spyder
IDLE

P.S. …есть и другие
https://wiki.python.org/moin/IntegratedDevelopmentEnvironments


Komodo IDE

2. Интегрированные среды разработкиIDE: Интегрированная среда разработки (англ. Integrated Development Environment) PyCharmPyDevWingWareKomodo IDEEricSpyderIDLEP.S. …есть и другиеhttps://wiki.python.org/moin/IntegratedDevelopmentEnvironments Komodo

Слайд 20Среда программирования PyCharm
https://www.jetbrains.com/pycharm/
Создатель: JetBrains
Исходный код: Закрытый
ОС: Windows, Linux, MacOS
Возможности

интегрированного модульного тестирования, проверки кода, интегрированного контроля версий, инструменты переработки

(рефакторинга) кода, набор инструментов для навигации проекта, выделения и автоматического завершения. Поддержка ряда сторонних фреймворков для веб-разработки, таких как Django, Pyramid, web2py, Google App Engine и Flask

Среда программирования PyCharmhttps://www.jetbrains.com/pycharm/Создатель: 		JetBrainsИсходный код: 	Закрытый ОС: 			Windows, Linux, MacOSВозможности интегрированного модульного тестирования, проверки кода, интегрированного контроля

Слайд 21Среда программирования PyDev
http://www.pydev.org/
Плагин Python для Eclipse
Поддерживается всеми операционными системами
Источники находятся

в свободном доступе по публичной лицензии Eclipse
Обработка кода, интеграция отладки

Python, инструменты переработки кода и пр.
Возможность создания новых проектов Django, выполнение команд Django при помощи горячих клавиш и использование отдельной конфигурации запуска только для Django.

Среда программирования PyDevhttp://www.pydev.org/Плагин Python для EclipseПоддерживается всеми операционными системамиИсточники находятся в свободном доступе по публичной лицензии EclipseОбработка

Слайд 22Среда программирования WingWare
https://wingware.com/
Создатель: WingWare
Исходный код: Закрытый
ОС: Windows, Linux, MacOS
Есть

мощный инструмент отладки, который позволяет устанавливать контрольные точки, возможность пошагового

выполнения кода, проверка данных, удалённая отладка и отладка шаблонов Django.
Поддержка matplotlib, с автоматическим обновлением графиков. Также предоставляется доработка кода, подсветка синтаксиса, исходный браузер, графический отладчик и поддержка систем управления версиями.

Среда программирования WingWarehttps://wingware.com/Создатель: 		WingWareИсходный код: 	Закрытый ОС: 			Windows, Linux, MacOSЕсть мощный инструмент отладки, который позволяет устанавливать контрольные

Слайд 23Среда программирования Komodo IDE

Создатель: ActiveState
Исходный код: Закрытый
ОС: Windows, Linux,

MacOS
Поддержка Django: подсветка синтаксиса и завершение кода для шаблонов.
Содержит

базовые функции, такие как переработку (рефакторинг) кода, автозаполнение, calltips (подсказки), сопоставление скобок, браузер кода, переход к определению, графическая отладка, многопроцессная отладка, многопоточная отладка, конфигурация точки остановки, профилирование кода, интеграция со сторонними библиотеками, такими как pyWin32.
Интеграция менеджера пакетов, отслеживание изменений, инструмент просмотра заметок, быстрые закладки, переход ко всему (Commando) и многое другое.

Среда программирования Komodo IDEСоздатель: 		ActiveStateИсходный код: 	Закрытый ОС: 			Windows, Linux, MacOSПоддержка Django: подсветка синтаксиса и завершение кода

Слайд 24Eric IDE
https://eric-ide.python-projects.org/
Создатель: Detlev Offenbach
Исходный код: Открытый
ОС: Windows
Содержит отладчик

Python и Ruby, покрытие кода, автоматическая проверка кода, оболочку Python

и Ruby, браузер класса и пр.
Имеются функции для совместного редактирования. Диалоги Regex и Qt, опции для создания сторонних приложений в редакторе, диаграммы приложения, возможности управления проектами, и интерактивная оболочка Python.
Многоязычный пользовательский интерфейс, который включает в себя и русский
Контроль версии для Subversion, Mercurial и Git, использование объявлений в плагинах, и многое другое.
Eric IDEhttps://eric-ide.python-projects.org/ Создатель: 	Detlev Offenbach Исходный код: 	ОткрытыйОС: 			WindowsСодержит отладчик Python и Ruby, покрытие кода, автоматическая проверка

Слайд 25Конфигурирование IDE
Поскольку обновления Python выходят достаточно часто, при настройке среды

разработки важно указать путь к вашей текущей версии Python
Настройка пути

интерпретатора Python в pyCharm
Конфигурирование IDEПоскольку обновления Python выходят достаточно часто, при настройке среды разработки важно указать путь к вашей текущей

Слайд 263. Основные понятия Python Enhancement Proposals (PEP)
Одной из причин, почему код

Python прост для понимания, является наличие информативного руководстве по стилю

написания кода (представлено в двух Предложениях по развитию Python PEP 20 и PEP 8) и питонских идиомах.
3. Основные понятия Python Enhancement Proposals (PEP)Одной из причин, почему код Python прост для понимания, является наличие

Слайд 27PEP 8
Фактически представляет собой руководство по стилю написания кода

Python. Здесь рассматриваются
соглашения по именованию,
структура кода,
пустые области

(табуляция против пробелов)
и другие аналогичные темы.
Все сообщество Python старается следовать принципам, изложенным в этом документе.
С помощью программы pycodestyle (pep8)
(https://github.com/PyCQA/pycodestyle), которая запускается из командной строки, можно проверить код на соответствие принципам PEP 8.

PEP 8 Фактически представляет собой руководство по стилю написания кода Python. Здесь рассматриваются соглашения по именованию, структура

Слайд 28PEP 20 – The Zen of Python
(https://www.python.org/dev/peps/pep-0020/ ) (набор принципов

для принятия решений в Python) всегда доступен по команде import

this в оболочке Python

Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
Одноуровневое лучше, чем вложенное.
Разреженное лучше, чем плотное.
Читаемость имеет значение.
Особые случаи не настолько особые, чтобы нарушать правила.
При этом практичность важнее безупречности.
Ошибки никогда не должны замалчиваться.
Если не замалчиваются явно.
Встретив двусмысленность, отбросьте искушение угадать.
Должен существовать один – и желательно только один – очевидный способ сделать это.
Хотя он поначалу может быть и не очевиден, если вы не голландец.
Сейчас лучше, чем никогда.
Хотя никогда зачастую лучше, чем прямо сейчас.
Если реализацию сложно объяснить – идея плоха.
Если реализацию легко объяснить – идея, возможно, хороша.
Пространства имен – отличная штука! Будем делать их побольше!
PEP 20 – The Zen of Python(https://www.python.org/dev/peps/pep-0020/ ) (набор принципов для принятия решений в Python) всегда доступен

Слайд 29Явное лучше чем неявное
Неявно передаются переменные (плохо!)
def make_dict(*args):

x, y = args
return dict(**locals())

Явно указываются

принимаемые и возвращаемые значения (хорошо!)
def make_dict(x, y):
return {'x': x, 'y': y}


Явное лучше чем неявноеНеявно передаются переменные (плохо!)def make_dict(*args):    x, y = args

Слайд 30Разреженное лучше, чем плотное
В каждой строке рекомендуется размещать только одно

выражение
print(' Так ' ); print('неверно')
print('Так ')
print('верно') Неверно:
if ( and ):

<инструкции>
Верно:
cond1 = <условие1>
cond2 = <условие2>
if cond1 and cond2: <инструкции>
Разреженное лучше, чем плотноеВ каждой строке рекомендуется размещать только одно выражениеprint(' Так ' ); print('неверно')	print('Так ')print('верно')

Слайд 31Философия Python сосредоточена во фразе «Мы все – ответственные пользователи»
Любой

клиентский код может переопределить свойства и методы объекта. Однако сообщество

Python предпочитает полагаться на набор соглашений, которые указывают, к каким элементам нельзя получить доступ напрямую.
Основным соглашением для закрытых свойств и деталей реализации является обязательное добавление к именам подобных элементов нижнего подчеркивания (например, sys._getframe).
Если клиентский код в нарушение этого правила получает доступ к отмеченным элементам, то считается, что любое неверное поведение или проблемы вызваны именно клиентским кодом.
Философия Python сосредоточена во фразе  «Мы все – ответственные пользователи» Любой клиентский код может переопределить свойства

Слайд 32Структура программы
Программы делятся на модули.
Модули содержат инструкции.
Инструкции состоят из выражений.
Выражения

создают и обрабатывают объекты.
Синтаксис языка Python по сути построен на

инструкциях и выражениях. Выражения обрабатывают объекты и встраиваются в инструкции. Инструкции представляют собой более крупные логические блоки

Структура программыПрограммы делятся на модули.Модули содержат инструкции.Инструкции состоят из выражений.Выражения создают и обрабатывают объекты.Синтаксис языка Python по

Слайд 33Структура кода на Python
Python отличается от других языков тем, что

пробелы в нем используются для того, чтобы задать структуру программы.
Любая

программа более читаема, если её строки достаточно короткие. Рекомендуемая максимальная длина строки равна 80 символам
Формат инструкций:
<Основная инструкция>:
<Вложенный блок инструкций>
Конец строки является концом инструкции
Конец отступа – это конец блока
Перенос строки – символ "\"
См. Руководство для оформления программ на Python
Обычно на каждой строке располагается одна инструкция, но для большей компактности иногда можно записать несколько инструкций в одной строке, разделив их ";"
Структура кода на PythonPython отличается от других языков тем, что пробелы в нем используются для того, чтобы

Слайд 34См. также
https://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html
https://www.calculate-linux.org/main/ru/python_style_guide
http://www.python.org/doc/essays/styleguide.html

См. такжеhttps://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html https://www.calculate-linux.org/main/ru/python_style_guide http://www.python.org/doc/essays/styleguide.html

Слайд 35Комментарии
Комментарии предназначены для вставки пояснений в текст программы, интерпретатор полностью

их игнорирует. Внутри комментария может располагаться любой текст, включая инструкции,

которые выполнять не следует.

# Пример комментария
S = 1 # и это комментарий
КомментарииКомментарии предназначены для вставки пояснений в текст программы, интерпретатор полностью их игнорирует. Внутри комментария может располагаться любой

Слайд 36Начало файла
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
Это связано с переносимостью

скриптов. Путь к python на разных системах может отличаться, а

вот путь к env на всех системах неизменный. Поэтому, вызывая env и передавая ей в качестве аргумента нужный интерпретатор, можно быть уверенным, что скрипт будет запущен вне зависимости от того, где на самом деле находится интерпретатор (главное, чтобы он был в PATH).
Вторая строка показывает систему кодировки кода
Начало файла#!/usr/bin/env python3# -*- coding: utf-8 -*-Это связано с переносимостью скриптов. Путь к python на разных системах

Слайд 37Продолжение длинной строки
Если строка длиннее принятого в PEP8 значения (80)

то рекомендуется заключить элементы в круглые скобки. Если интерпретатор Python

встретит незакрытую круглую скобку в одной строке, он будет присоединять к ней следующие строки до нахождения закрытой скобки. То же поведение верно для фигурных и квадратных скобок

long_string = (
' Это длинная строка'
' с продолжением'
)

Примечание: по возможности следует избегать таких строк, чтобы не вредить читабельности
Продолжение длинной строкиЕсли строка длиннее принятого в PEP8 значения (80) то рекомендуется заключить элементы в круглые скобки.

Слайд 38Временная переменная
Если необходимо присвоить какое-то значение, но сама переменная не

нужна, воспользуйтесь двойным подчеркиванием ( __ ).
Иногда рекомендуют для этих

целей использовать одинарное подчёркивание ( _ ), однако проблема в том, что оно зачастую применяется как псевдоним для функции gettext.gettext() и как интерактивное приглашение сохранить значение последней операции, что может вызвать перезапись этой переменной.
Временная переменнаяЕсли необходимо присвоить какое-то значение, но сама переменная не нужна, воспользуйтесь двойным подчеркиванием ( __ ).Иногда

Слайд 394. Анализаторы кода
Поскольку в Python используется интерпретатор, а не компилятор,

то многие ошибки обнаруживаются уже в ходе выполнения.
Поэтому имеет

смысл использовать анализаторы кода.
Например
https://www.pylint.org/
https://pypi.python.org/pypi/pyflakes
PyLint можно интегрировать в IDE, такие как PyCharm и текстовые редакторы
Подробнее об анализаторах кода см.
https://python-scripts.com/code-analysis
4. Анализаторы кодаПоскольку в Python используется интерпретатор, а не компилятор, то многие ошибки обнаруживаются уже в ходе

Слайд 405. Модули
Один из основных уровней абстракции. Уровни абстракции позволяют программисту

разбивать код на части, которые содержат связанные данные и функциональность.
Импортирование

модуля производится командой import
Модули могут быть встроенными, сторонними и внутренними (пользовательскими).
Примеры встроенных модулей – os, sys.
Примеры сторонних пакетов в среде – Requests, NumPy
Пример:
import sys #Встроенный модуль
import matplotlib.pyplot as plt # Сторонний модуль

5. МодулиОдин из основных уровней абстракции. Уровни абстракции позволяют программисту разбивать код на части, которые содержат связанные

Слайд 41Примеры пользовательских модулей:
Модуль взаимодействия с пользователем
Модуль записи в файл
Модуль считывания

из файла
Модуль построения графиков
Управляющий модуль
Расчётный модуль
Модуль функций

Примеры пользовательских модулей:Модуль взаимодействия с пользователемМодуль записи в файлМодуль считывания из файлаМодуль построения графиковУправляющий модульРасчётный модульМодуль функций

Слайд 42Именование модулей
Модулям присваиваются короткие имена, которые начинаются со строчной буквы.


Не нужно использовать символы типа (.) или (?)
Также не следует

злоупотреблять (_), поскольку можно спутать с именем переменной
Именование модулейМодулям присваиваются короткие имена, которые начинаются со строчной буквы. Не нужно использовать символы типа (.) или

Слайд 43Рекомендации
Не используйте расширения имен файлов в инструкциях import и reload.
Не

указывайте полные пути к файлам и расширения в инструкциях import.

Например, следует писать import mod, а не import mod.py).
РекомендацииНе используйте расширения имен файлов в инструкциях import и reload.Не указывайте полные пути к файлам и расширения

Слайд 44Упаковка
Python предоставляет достаточно понятную систему упаковки, которая расширяет механизм модулей

так, что он начинает работать с каталогами.
Любой каталог, содержащий файл

__init__.py, считается пакетом Python.
Каталог высшего уровня, в котором находится файл __init__.py, является корневым пакетом.
Разные модули пакетов импортируются аналогично простым модулям, но файл __init__.py при этом будет использован для сбора всех описаний на уровне пакета.
Признаком хорошего тона является поддержание файла __init__.py пустым, когда модули и подпакеты пакета не имеют общего кода.
УпаковкаPython предоставляет достаточно понятную систему упаковки, которая расширяет механизм модулей так, что он начинает работать с каталогами.Любой

Слайд 45Пакетирование модулей
Модули можно группировать по назначению и располагать в соответствующих

папках. Например:
sound/

Верхний уровень
__init__.py Инициализатор пакета
formats/ подпакет конверсии форматов
__init__.py
wavread.py
wavwrite.py
aiffread.py
effects/ Подпакет эффектов
__init__.py
echo.py
surround.py
reverse.py
filters/ Подпакет фильтров
__init__.py
equalizer.py
vocoder.py
karaoke.py

См. https://docs.python.org/3/tutorial/modules.html#packages
Пакетирование модулейМодули можно группировать по назначению и располагать в соответствующих папках. Например:sound/

Слайд 46Импорт модулей из пакетов
Файл __init__.py нужен, чтобы показать, что папка

содержит модули. Сам файл может быть пустым, либо содержать инициализацию

переменной __all__ или код инициализации модулей

Импорт подмодуля: import sound.effects.echo
Обращение к нему: sound.effects.echo.echofilter (input, output, delay=0.5, atten=5)

Альтернативно: from sound.effects import echo
Обращение к нему: echo.echofilter (input, output, delay=0.5, atten=5)

Альтернативно: from sound.effects.echo import echofilter
Обращение к нему: echofilter(input, output, delay=0.5, atten=5)
Импорт модулей из пакетовФайл __init__.py нужен, чтобы показать, что папка содержит модули. Сам файл может быть пустым,

Слайд 47Импорт модулей (продолжение)
Пусть в файле \effects\ __init__.py определена:
__all__ =

["echo", "surround", "reverse"]
Тогда
from sound.effects import *
импортирует все три названных подмодуля
Если

же не определить __all__ , тогда НЕ импортируются подмодули из sound.effects
Импорт модулей (продолжение)Пусть в файле \effects\ __init__.py определена: __all__ = [

Слайд 48Читаемость импортированных модулей
from modu import * #Непонятный код
x = sqrt(4) #Откуда что?

from

modu import sqrt #Импортируем
# конкретную функцию
x = sqrt(4)

import modu #

Импортируем модуль
x = modu.sqrt(4) # И ссылаемся на
# функцию sqrt внутри него


Читаемость импортированных модулейfrom modu import *	#Непонятный кодx = sqrt(4)			#Откуда что?from modu import sqrt 	#Импортируем 				# конкретную функциюx

Слайд 49Импорт отдельных подмодулей
Из вышеприведённого примера можно импортировать отдельные подмодули в

sounds/effects/surround.py с использованием относительных путей:
#импорт sound/effects/echo.py
from . import echo
#импорт

sound/formats
from .. import formats
#импорт sound/filters/equalizer.py
from ..filters import equalizer

Импорт отдельных подмодулейИз вышеприведённого примера можно импортировать отдельные подмодули в sounds/effects/surround.py с использованием относительных путей:#импорт sound/effects/echo.pyfrom .

Слайд 50Структура, это главное
Следует избегать большого количества циклических зависимостей
Например, если файл

one.py зависит от файла two.py, который зависит от файла one.py,

то это может вызвать ошибку ImportError.
Избыточное использование глобального состояния или контекста
Например, вместо явной передачи данных используются глобальные переменные, которые модифицируются другими структурными единицами. Отследить, какие именно внесли критические изменения в такие переменные очень сложно.

Структура, это главноеСледует избегать большого количества циклических зависимостейНапример, если файл one.py зависит от файла two.py, который зависит

Слайд 51Читабельность важнее скорости
Спагетти-код. Вложенные условия if, расположенные на нескольких страницах

подряд, и циклы for, содержащие большое количество скопированного текста.
Подробнее см.

https://habrahabr.ru/post/187154/
Равиоли-код состоит из множества небольших логических фрагментов, зачастую классов или объектов, которые не имеют хорошей структуры. Т.е. это чересчур мелкоструктурированный код.


Читабельность важнее скоростиСпагетти-код. Вложенные условия if, расположенные на нескольких страницах подряд, и циклы for, содержащие большое количество

Слайд 52ООП
В Python все элементы являются объектами и работают как объекты.


Функции являются объектами первого класса. Функции, классы, строки и даже

типы считаются в Python объектами: все они имеют тип, их можно передать как аргументы функций, они могут иметь методы и свойства.
Однако, в отличие от Java, в Python парадигма объектно-ориентированного программирования (ООП) не основная. Проект, написанный на Python, вполне может и не быть объектно-ориентированным
ООПВ Python все элементы являются объектами и работают как объекты. Функции являются объектами первого класса. Функции, классы,

Слайд 53Функциональное программирование
Парадигма, которая в своей чистейшей форме не имеет операторов

присваивания и побочных эффектов и вызывает функции одну за другой,

чтобы выполнить задачу.
В Python имеются инструменты, которые позволяют заниматься функциональным программированием, хотя он не является чисто функциональным языком.
Подробнее с этим аспектом Python можно ознакомиться http://bit.ly/functional-programming-python
Функциональное программированиеПарадигма, которая в своей чистейшей форме не имеет операторов присваивания и побочных эффектов и вызывает функции

Слайд 546. Доступ к документации
Документ
Пуск>Программы (Все программы)>Python 3.x> Python 3.x Manuals.
Сервер

документов (откроется в браузере)
Пуск>Программы (Все программы)>Python 3.x> Python 3.x Module

Docs.
Там находятся страницы с описанием всех классов, функций и констант, объявленных в стандартных модулях
Чтобы завершить работу, следует переключиться в его окно, ввести команду q и нажать . А введенная там команда b повторно выведет страницу со списком модулей.
Оригинальную документацию онлайн см. https://docs.python.org/3/

6. Доступ к документацииДокументПуск>Программы (Все программы)>Python 3.x> Python 3.x Manuals.Сервер документов (откроется в браузере)Пуск>Программы (Все программы)>Python 3.x>

Слайд 55Функция help
С помощью функции help() можно получить документацию по конкретной

функции и по всему модулю сразу.
Для вывода помощи по классу

str в модуле builtins набрать в консоли:
>>>help(str)
Cначала импортируем модуль
>>> import builtins
А затем выведем справку по нему
>>> help(builtins)
Функция helpС помощью функции help() можно получить документацию по конкретной функции и по всему модулю сразу.Для вывода

Слайд 56Строки документирования
для комментирования большого фрагмента кода используются утроенные кавычки или

утроенные апострофы. Такие строки не являются комментариями в полном смысле

этого слова. Вместо комментирования фрагмента создается объект строкового типа, который сохраняется в атрибуте __doc__.
Функция help() при составлении документации получает информацию из этого атрибута.
Строки документированиядля комментирования большого фрагмента кода используются утроенные кавычки или утроенные апострофы. Такие строки не являются комментариями

Слайд 57Пример документирования
# -*- coding: utf-8 -*-
"""описание модуля testd.py """
def func():
"""

Описание функции"""
pass

Подключаем модуль testd и выводим документацию:
# -*- coding: utf-8

-*-
import testd
help(testd)
Пример документирования# -*- coding: utf-8 -*-

Слайд 58Результат в консоли
Help on module testd:
NAME
testd - описание

модуля testd.py
FUNCTIONS
func()
Описание функции
FILE

c:\users\пользователь\pycharmprojects\modulestest01\testd.py

Результат в консолиHelp on module testd:NAME  testd - описание модуля testd.pyFUNCTIONS  func()

Слайд 59Атрибут __doc__:
import testd
print(testd.__doc__)
print(testd.func.__doc__)

Вывод:
описание модуля testd.py
Описание функции

Атрибут __doc__:import testdprint(testd.__doc__)print(testd.func.__doc__)Вывод: описание модуля testd.py Описание функции

Слайд 60Список всех атрибутов
Список всех атрибутов, имеющихся у любого объекта, можно

получить с помощью функции dir(X)
Например: print(dir(print)) выдаст
['__call__', '__class__', '__delattr__', '__dir__',

'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
Список всех атрибутовСписок всех атрибутов, имеющихся у любого объекта, можно получить с помощью функции dir(X)Например: print(dir(print)) выдаст['__call__',

Слайд 61Спасибо за внимание

Спасибо за внимание

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика