Области применения Python

Содержание

Слайд 2

Области применения Python

Области применения Python

Слайд 3

https://docs.python.org/3/index.html https://pythoner.name/documentation (перевод документации) https://ipython.org/ipython-doc/3/index.html Справочник по стандартной библиотеке языка Python

https://docs.python.org/3/index.html
https://pythoner.name/documentation (перевод документации)
https://ipython.org/ipython-doc/3/index.html
Справочник по стандартной библиотеке языка Python
https://pythonworld.ru/samouchitel-python
https://www.bestprog.net/ru/sitemap_ru/python-ru/


Python Module of the Week
https://python-scripts.com/

Источники информации

Слайд 4

Perform Operations using Data Types & Operators Perform Operations Using Modules

Perform Operations using Data Types & Operators
Perform Operations Using Modules and

Tools
Control Flow with Decisions and Loops
Perform Input and Output Operations
Document and Structure Code
Perform Troubleshooting and Error Handling

Module Objectives

Слайд 5

Introduction: Installing and Running Python Commands

Introduction: Installing and Running Python Commands

Слайд 6

Introduction: Installing and Running Python Commands

Introduction: Installing and Running Python Commands

Слайд 7

IPython – это интерактивная оболочка для с широким набором возможностей и

IPython – это интерактивная оболочка для с широким набором возможностей и

ядро для Jupyter.
Jupyter notebook является графической веб-оболочкой для IPython, которая расширяет идею консольного подхода к интерактивным вычислениям.

IPython

Слайд 8

IPython

IPython

Слайд 9

Anaconda

Anaconda

Слайд 10

Jupyter Notebook Как настроить и работать с Jupyter Notebook

Jupyter Notebook

Как настроить и работать с Jupyter Notebook

Слайд 11

Jupyter Notebook run from an Internet Google Colaboratory

Jupyter Notebook run from an Internet

Google Colaboratory

Слайд 12

Стартовое окно EXAMPLES: Contain a number of Jupyter notebooks of various

Стартовое окно

EXAMPLES: Contain a number of Jupyter notebooks of various examples.
RECENT:

Jupyter notebook you have recently worked with.
GOOGLE DRIVE: Jupyter notebook in your google drive.
GITHUB: You can add Jupyter notebook from your GitHub but you first need to connect Colab with GitHub.
UPLOAD: Upload from your local directory.
Слайд 13

Пример

Пример

Слайд 14

Anaconda Navigator

Anaconda Navigator

Слайд 15

Choosing an IDE

Choosing an IDE

Слайд 16

Visual Studio Code

Visual Studio Code

Слайд 17

JetBrains PyCharm

JetBrains PyCharm

Слайд 18

Слайд 19

Virtualizing The Python Environment https://docs.python.org/3/tutorial/venv.html

Virtualizing The Python Environment

https://docs.python.org/3/tutorial/venv.html

Слайд 20

Running Python Commands

Running Python Commands

Слайд 21

Useful Python Commands

Useful Python Commands

Слайд 22

%lsmagic – список всех команд %matplotlib inline – для отображения графиков

%lsmagic – список всех команд
%matplotlib inline – для отображения графиков по умолчанию
%%html

– визуализирует ячейку как блок HTML

IPython magic commands

Слайд 23

Demonstration / Exercise 1_0: Installing and Running Python Commands

Demonstration / Exercise 1_0: Installing and Running Python Commands

Слайд 24

Lesson 1: Perform Operations using Data Types and Operators

Lesson 1: Perform Operations using Data Types and Operators

Слайд 25

Отступы в Python Python использует отступ для указания блока кода: if

Отступы в Python
Python использует отступ для указания блока кода:
if 5 >

2:
print("Пять больше двух!")
Комментарии
Комментарии следует начинать с символа #
Строки документации
Имеются расширенные возможности документации, называемые docstrings – тройные кавычки в начале и конце docstring:
"""Это многострочная
строка документации"""
print("Привет, Мир!")

Особенности синтаксиса

Слайд 26

Все типы в Python являются объектами - при создании объекта вызывается

Все типы в Python являются объектами - при создании объекта вызывается

специальная функция - конструктор

Data Types

В Python встроенные типы данных подразделяются на 2 группы:
скалярные
структурированные

Слайд 27

В Python нет символьного типа данных, один символ — это просто строка с длиной 1

В Python нет символьного типа данных, один символ — это просто

строка с длиной 1
Слайд 28

Для связывания (и при необходимости предварительного создания) объекта и переменной используется

Для связывания (и при необходимости предварительного создания) объекта и переменной используется

оператор присваивания =
Присваивание выполняется «справа налево» и подразумевает шаги:
если справа от оператора находится литерал (строка или число) в операнд слева записывается ссылка, которая указывает на объект в памяти, хранящий значение литерала:
a = 3 # Создание объекта 3 и запись ссылки на него в переменную 'a'

Using variables

Слайд 29

Для связывания (и при необходимости предварительного создания) объекта и переменной используется

Для связывания (и при необходимости предварительного создания) объекта и переменной используется

оператор присваивания =
Присваивание выполняется «справа налево» и подразумевает шаги:
если справа находится ссылка на объект, в левый операнд записывается ссылка, указывающая на тот же самый объект, на который ссылается правый операнд;

Using variables

Слайд 30

Python – язык со строгой динамической типизацией Все с чем работает

Python – язык со строгой динамической типизацией
Все с чем работает

программист – объекты
Python - язык с встроенным менеджером управления памятью и выполняет операции очистки памяти автоматически за счет наличия сборщика мусора (Garbage Collection, GC)
Алгоритм, используемый сборщиком мусора называется подсчетом ссылок (Reference Counting).
Python хранит журнал ссылок на каждый объект и автоматически уничтожает объект, как только на него больше нет ссылок

Особенности Python – Безопасность доступа к памяти 

Слайд 31

Коллекции — это данные, которые содержат в себе другие данные и

Коллекции — это данные, которые содержат в себе другие данные и

поддерживают:
проверку на вхождения элементов in и not in (True/False);
определение размера len();
возможность выполнения итераций (перемещения по элементам последовательности)
Среди коллекций выделяют 3 группы:
последовательности: строка, список, кортеж, числовой диапазон
множества
отображения: словарь

Коллекции

Слайд 32

Для индексации и получения срезов удобно пользоваться обозначениями: s[-1] # Последний

Для индексации и получения срезов удобно пользоваться обозначениями:
s[-1] # Последний символ
Срезы

обеспечивают глубокое копирование:
x = [53, 68, ["А", "В", "С"]]
x1 = x # Поверхностная копия (через присваивание)
x2 = x[:] # Глубокая копия (создается при срезе)
x3 = x.copy() # Глубокая копия (через метод copy())

Индексация и срезы

Слайд 33

Operators

Operators

Слайд 34

Order of Precedence

Order of Precedence

Слайд 35

Array Data Structures

Array Data Structures

Слайд 36

Demonstration / Exercise 1_1: Perform Operations using Data Types and Operators

Demonstration / Exercise 1_1: Perform Operations using Data Types and Operators


Слайд 37

Project 1_1A: Perform Operations using Data Types and Operators

Project 1_1A: Perform Operations using Data Types and Operators

Слайд 38

Project 1_1B: Perform Operations using Data Types and Operators

Project 1_1B: Perform Operations using Data Types and Operators

Слайд 39

Lesson 2: Perform Operations Using Modules and Tools

Lesson 2: Perform Operations Using Modules and Tools

Слайд 40

Commonly Used Modules

Commonly Used Modules

Слайд 41

Commonly Used Modules Подключение модуля к программе на Python осуществляется с

Commonly Used Modules

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

оператора import:
У него есть две формы: import и from-import
# Импортирует модули 'module_1', 'module_2',..., 'module_n’
import module_1, module_2, ..., module_n
# Импортирует модуль 'module_1' под псевдонимом 'preferred_name’
import module_1 as preferred_name
import numpy as np
Инструкция from имеет несколько форматов:
from <Название модуля> import <Атрибут 1> [ as <Псевдоним 1> ], [<Атрибут 2> [ as —<Псевдоним 2> ] ...]
from random import randint
from random import *
Слайд 42

Other Modules

Other Modules

Слайд 43

Help with Modules

Help with Modules

Слайд 44

Demonstration / Exercise 1_2: Perform Operations Using Modules and Tools

Demonstration / Exercise 1_2: Perform Operations Using Modules and Tools

Слайд 45

Project 1_2A: Perform Operations Using Modules and Tools

Project 1_2A: Perform Operations Using Modules and Tools

Слайд 46

Project 1_2B: Perform Operations Using Modules & Tools

Project 1_2B: Perform Operations Using Modules & Tools

Слайд 47

Lesson 3: Control Flow with Decisions and Loops

Lesson 3: Control Flow with Decisions and Loops

Слайд 48

If Statements

If Statements

Слайд 49

Пример. На плоскости выделены три зоны (I, II, III). Дана координата

Пример.
На плоскости выделены три зоны (I, II, III). Дана координата

х точки.
Определить, в какую зону попала эта точка (допущение: х не равно границам зон (–1 и 5)

Альтернативные вычисления: три и более вариантов действий

Слайд 50

Решение. в программе использовать 3 неполных варианта инструкции if (без ветви

Решение.
в программе использовать 3 неполных варианта инструкции if (без ветви

else):

Альтернативные вычисления: три и более вариантов действий

if x < -1:
print('В зону III')
if x > 5:
print('В зону I')
if x > -1 and x < 5:
print('В зону II')

Слайд 51

Решение. сэкономить одно слово if и использовать полный вариант инструкции: Альтернативные

Решение.
сэкономить одно слово if и использовать полный вариант инструкции:

Альтернативные вычисления:

три и более вариантов действий

if x < -1:
print('В зону III')
if x > 5:
print('В зону I')
else:
print('В зону II')

Проблема! Будьте внимательны, проверьте при x = – 8

Слайд 52

Решение. Правильное решение использовать полный вариант инструкции: Альтернативные вычисления: три и

Решение.
Правильное решение использовать полный вариант инструкции:

Альтернативные вычисления: три и более

вариантов действий

x = -8
if x < -1:
print("В зону III")
else:
if x > 5:
print('В зону I’)
else:
print('В зону II')

Слайд 53

for Statements

for Statements

Слайд 54

while Statements

while Statements

Слайд 55

Итератор - специальный объект, предоставляющий навигацию по другим (итерируемым) объектам Итераторы

Итератор - специальный объект, предоставляющий навигацию по другим (итерируемым) объектам

Итераторы

Слайд 56

Генераторы списков – возвращают список [ expression for item in list

Генераторы списков – возвращают список
[ expression for item in list

if conditional ]
b = [i+10 for i in a]
Генераторы словарей – возвращают словарь:
{ key:value for item in list if conditional }
Выражения-генератор (Generator Expressions) – возвращают объект
генераторы могут быть написаны таким же образом, за исключением того, что они возвращают объект генератора, а не список
( expression for item in list if conditional )

Генераторы

Слайд 57

Demonstration / Exercise 1_3: Control Flow with Decisions and Loops

Demonstration / Exercise 1_3: Control Flow with Decisions and Loops

Слайд 58

Project 1_3A: Control Flow with Decisions and Loops

Project 1_3A: Control Flow with Decisions and Loops

Слайд 59

Project 1_3B: Control Flow with Decisions and Loops

Project 1_3B: Control Flow with Decisions and Loops

Слайд 60

Lesson 4: Perform Input and Output Operations OUTPUT Analyze / Process INPUT https://docs.python.org/3/tutorial/inputoutput.html

Lesson 4: Perform Input and Output Operations

OUTPUT

Analyze / Process

INPUT

https://docs.python.org/3/tutorial/inputoutput.html

Слайд 61

Working With Files ‘r’ открытие на чтение (значение по умолчанию) ‘w’

Working With Files

‘r’ открытие на чтение (значение по умолчанию)
‘w’ открытие на запись, содержимое

файла удаляется, если файла не существует, создается новый
‘x’ открытие на запись, если файла не существует, иначе исключение
‘a’ открытие на дозапись, информация добавляется в конец файла
‘b’ открытие в двоичном режиме
‘t’ открытие в текстовом режиме (значение по умолчанию)
‘+’ открытие на чтение и запись
Слайд 62

Сериализация — процесс перевода какой-либо структуры данных в последовательность битов При

Сериализация — процесс перевода какой-либо структуры данных в последовательность битов
При помощи

модуля pickle можно сохранять любой объект Python в двоичном файле, а затем извлекать его обратно
Сериализует объект obj и записывает его в файл file:
pickle.dump(obj, file)
Читает и десериализует содержимое файла file, возвращая созданный объект (структуру):
pickle.load(file)

Модуль pickle

Слайд 63

Модуль struct в Python используется для создания и вытягивания упакованных двоичных

Модуль struct в Python используется для создания и вытягивания упакованных двоичных

данных из строк
В модуле struct байты данных интерпретируются как упакованные двоичные данные, которые могут быть представлены объектами типов bytes или bytearray
Для упаковки и распаковки данных используются методы pack(), unpack().
Процесс упаковки/распаковывки реализуется в соответствии со строкой формата.
objP = struct.pack(format, v1, v2, ...)
objU = struct.unpack(format, objP)

Модуль struct

Слайд 64

Little-endian и big-endian – это два основных порядка байт. Например, есть

Little-endian и big-endian – это два основных порядка байт.
Например, есть

короткое целое (short int), и оно занимает два байта. Какой из байтов должен идти сначала, а какой в конце?
В big-endian (>) порядок от старшего байта к младшему
В little-endian (<) порядок от младшего байта к старшему
Пример. 258 = 2*20 + 1*28
struct.pack("struct.pack(">h", 258) # big-endian b'\x01\x02'

Модуль struct: Little-endian и big-endian

Слайд 65

CSV (Comma-Separated Values - значения, разделенные запятыми) Формат, предназначенный для представления

CSV (Comma-Separated Values - значения, разделенные запятыми)
Формат, предназначенный для представления табличных

данных.
Каждая строка файла - это одна строка таблицы, где значения отдельных колонок разделяются разделительным символом
Модуль csv поддерживает работу с CSV-файлами
Создает и возвращает объект для чтения последовательности из CSV-файла:
csv.reader(csvfile, dialect='excel', fmtparams)
Создает и возвращает объект для записи последовательности в CSV-файл:
csv.writer(csvfile, dialect='excel', fmtparams)

Модуль csv

Слайд 66

SON (англ. JavaScript Object Notation) - текстовый формат обмена данными, основанный

SON (англ. JavaScript Object Notation) - текстовый формат обмена данными, основанный

на JavaScript.
Сериализует объект obj, возвращая строку в JSON-формате:
json.dumps(obj)
Десериализует объект (в том числе файловый) s, возвращая структуру в Python:
json.loads(s)
При ошибке десериализации возбуждается исключение JSONDecodeError.

Модуль json

Слайд 67

Creating Datasets Importing data from files Exporting data Working with Pandas

Creating Datasets
Importing data from files
Exporting data

Working with Pandas

Слайд 68

Working with Matplotlib

Working with Matplotlib

Слайд 69

Demonstration / Exercise 1_4: Perform Input and Output Operations

Demonstration / Exercise 1_4: Perform Input and Output Operations

Слайд 70

Project 1_4A: Perform Input and Output Operations

Project 1_4A: Perform Input and Output Operations

Слайд 71

Project 1_4B: Perform Input and Output Operations

Project 1_4B: Perform Input and Output Operations

Слайд 72

Lesson 5: Document and Structure Code

Lesson 5: Document and Structure Code

Слайд 73

Using Functions

Using Functions

Слайд 74

Описание функции в Python Определение (описание) функции состоит из двух частей:

Описание функции в Python

Определение (описание) функции состоит из двух частей: заголовка

и тела:
список параметров - состоит из перечня типов и имен параметров, разделенных запятыми, круглые скобки обязательны.
тело функции – набор выражений.

def <имя функции> ([<список параметров>]):
<тело функции>
return

Функция в Python – объект, принимающий аргументы и возвращающий значение

Слайд 75

Параметры и аргументы Параметр (формальный параметр) — это переменная, которая является

Параметры и аргументы

Параметр (формальный параметр) — это переменная, которая является частью

объявления функции
Аргумент — это выражение, применяемое при вызове функции
Слайд 76

Необязательные параметры Объявление необязательных параметров разрешает пропуск их при указании аргументов

Необязательные параметры

Объявление необязательных параметров разрешает пропуск их при указании аргументов

Все необязательные

параметры должны располагаться после обязательных параметров
Слайд 77

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

Именованные аргументы

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

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

Все именованные аргументы должны располагаться после позиционных аргументов — произвольно переключаться между стилями нельзя

для передачи позиционных аргументов можно использовать оператор распаковывания последовательностей (*)

Слайд 78

Упаковка и распаковка аргументов Упаковка аргументов - указать при объявлении параметра

Упаковка и распаковка аргументов

Упаковка аргументов - указать при объявлении параметра в

функции один из двух символов:
* все позиционные аргументы начиная с этой позиции и до конца будут собраны в кортеж;
** все ключевые аргументы начиная с этой позиции и до конца будут собраны в словарь.
def print_order(*order, **info):
Распаковка аргументов, используя аналогичные обозначения перед аргументом:
* кортеж /список распаковывается как отдельные позиционные аргументы и передается в функцию;
** словарь распаковывается как набор ключевых аргументов и передается в функцию
print(area_str(*abc, **params))
Слайд 79

Передача параметров в функцию Передача по значению Передача по ссылке a

Передача параметров в функцию

Передача по значению
Передача по ссылке

a = 3
x =

[ 1, 2 ]
def f1(a):
a = a + 1
return a
def f2(a):
a[0] = a[0] + 1
return a

print (a) # 3
print (x[0]) # 1
print(f1(a)) # 4
print(f2(x)) # [2, 2]
print (a) # 3
print (x[0]) # 2

Аргументы передаются посредством присваивания - в виде ссылок на объекты

Слайд 80

Variable Scope 1. Локальная (Local) Собственная область внутри инструкции def 2.

Variable Scope

1. Локальная (Local)
Собственная область внутри инструкции def
2. Нелокальная (Enclosed)

Область в пределах вышестоящей инструкции def
3. Глобальная (Global)
Область за пределами всех инструкций def - глобальная для всего модуля.
4. Встроенная (Built-in).
«Системная» область модуля builtins: содержит предопределенные идентификаторы, например, функцию max() и т.п.
Слайд 81

Variable Scope global объявляет переменные , глобальные для модуля, без присваивания

Variable Scope

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

значений
nonlocal объявляет переменные, находящиеся в области видимости объемлющей функции, без присваивания им значений
Если необходимо изменять в функции переменные более закрытой области видимости, существует три способа:
использовать инструкцию global: сообщая, что функция будет изменять один или более глобальных идентификаторов;
использовать инструкцию nonlocal: сообщая, что вложенная функция будет изменять один или более идентификаторов внешних функций;
передать мутирующий аргумент в качестве параметра функции.
Слайд 82

Анонимная функция (лямбда-функция или лямбда-выражение): lambda parameters: expression Результатом лямбда-выражения является

Анонимная функция (лямбда-функция или лямбда-выражение):
lambda parameters: expression
Результатом лямбда-выражения является анонимная

функция.
Когда лямбда-функция вызывается, она возвращает результат вычисления выражения expression.

Анонимные функции

def sqr1(x):
return x**2

sqr2 = lambda x: x**2

Обычная и лямбда-функция выполняют одно и то же действие, разница в синтаксисе

elements.sort(key=lambda x: x[1]) # Сортировка порядковому номеру
max(lst, key=lambda x: x.count("a")) # Элемент lst, в котором больше всего "a"

Слайд 83

Documentation Strings

Documentation Strings

Слайд 84

Demonstration / Exercise 1_5: Document and Structure Code

Demonstration / Exercise 1_5: Document and Structure Code

Слайд 85

Project 1_5: Document and Structure Code

Project 1_5: Document and Structure Code

Слайд 86

Lesson 6: Perform Troubleshooting and Error Handling Errors: syntax logic runtime https://docs.python.org/3/tutorial/errors.html

Lesson 6: Perform Troubleshooting and Error Handling

Errors:
syntax
logic
runtime

https://docs.python.org/3/tutorial/errors.html

Слайд 87

Syntax Errors

Syntax Errors

Слайд 88

Logic Errors

Logic Errors

Слайд 89

Runtime Errors Стратегии защиты: LBYL Look Before You Leap EAFP It’s

Runtime Errors

Стратегии защиты:
LBYL
Look Before You Leap
EAFP
It’s Easier To Ask Forgiveness

Than Permission
Слайд 90

Error Handling try/except Иерархия классов-исключений

Error Handling

try/except

Иерархия классов-исключений

Слайд 91

Error Handling try/except/else/finally try: # (try строго в единственном экземпляре) try_

Error Handling

try/except/else/finally

try: # (try строго в единственном экземпляре)
try_ suite #

код, который может выполниться с ошибкой
except exception_group1 as var1: # (except - 0 (если есть finally) и более)
except_suite1 # код, выполняемый в случае 'exception_group1'
... # ссылка на исключение может быть записана в 'var1'
except exception_groupN as varN:
except_suiteN # код, выполняемый в случае 'exception_groupN'
... # except-блоков может быть произвольное кол-во
else: # (else - 0 или 1)
else_suite # выполняется, если try не завершен преждевременно
finally: # (finally - 0 или 1)
finally_suite # код, который должен выполнится всегда
Слайд 92

Error Handling Options raise exception(args) # явное указание класса возбуждаемого исключения

Error Handling Options

raise exception(args) # явное указание класса возбуждаемого исключения

Слайд 93

Logging

Logging

Слайд 94

Demonstration / Exercise 1_6: Perform Troubleshooting and Error Handling

Demonstration / Exercise 1_6: Perform Troubleshooting and Error Handling

Слайд 95

Project 1_6A: Perform Troubleshooting and Error Handling

Project 1_6A: Perform Troubleshooting and Error Handling

Слайд 96

Project 1_6B: Perform Troubleshooting and Error Handling

Project 1_6B: Perform Troubleshooting and Error Handling

Слайд 97

Discuss lesson exercises Complete review questions Review

Discuss lesson exercises
Complete review questions

Review