5.02M
Категория: ПрограммированиеПрограммирование

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

1.

Programming Using Python

2.

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

3.

Источники информации
• 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.

Module Objectives
• 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

5.

Introduction: Installing and Running Python Commands

6.

Introduction: Installing and Running Python Commands

7.

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

8.

IPython

9.

Anaconda

10.

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

11.

Jupyter Notebook run from an Internet
Google Colaboratory

12.

Стартовое
окно
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

15.

Choosing an IDE

16.

Visual Studio Code

17.

JetBrains PyCharm

18.

19.

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

20.

Running Python Commands

21.

Useful Python Commands

22.

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

23.

Demonstration / Exercise 1_0: Installing and Running Python
Commands

24.

Lesson 1: Perform Operations using Data Types and
Operators

25.

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

26.

Data Types
В Python встроенные типы данных
подразделяются на 2 группы:
• скалярные
• структурированные
Все типы в Python являются
объектами - при создании объекта
вызывается специальная функция конструктор

27.

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

28.

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

29.

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

30.

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

31.

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

32.

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

33.

Operators
Operator
Meaning
Example
**
Exponent (Power)
2 ** 4 = 16
*
Multiplication
2*4=8
/
Division
2 / 4 = 0.5
-
Subtraction
2 – 4 = -2
%
Modulus (Remainder after division)
2%4=2
==
Equal (Boolean. True or False)
2 == 4 = False
>
Greater Than (Boolean. True or False)
2 > 4 = False

34.

Order of Precedence
Operators: (Evaluated from top to bottom)
Brackets
()
Exponent (Power)
**
Multiplication, Division, Modulo
* / %
Addition, Subtraction
+ -
Comparison
> >= < <=

35.

Array Data Structures

36.

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

37.

Project 1_1A: Perform Operations using Data Types and
Operators

38.

Project 1_1B: Perform Operations using Data Types and
Operators

39.

Lesson 2: Perform Operations Using Modules and Tools
Python 3.x
Built-in Module
Specialized Module
(math)
(numpy)
Built-in Module
Built-in Module
Customized Module
(time)
(sys)
(HR Dept. Project)

40.

Commonly Used Modules
Name
Purpose
Built-in
sys
Information about he Python environment
Yes
os
Retrieve or change operating system information
Yes
os.path
For working with operating system path functions
Yes
datetime
Used for calculating and manipulating date and time information
Yes
random
Can generate pseudo-random numbers
Yes
math
Used to access commonly used mathematical functions
Yes
statistics
Functions used to calculate mathematical statistics
Yes
csv
Used to read or write information to or from operating system files
Yes
io
Used to manage I/O operations when working with streams and files
Yes
numpy
Used for mathematical calculations and data science computing
No

41.

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

43.

Help with Modules

44.

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

45.

Project 1_2A: Perform Operations Using Modules and
Tools

46.

Project 1_2B: Perform Operations Using Modules & Tools

47.

Lesson 3: Control Flow with Decisions and Loops
Conditional Statements
(if, else, elif)
Control Flow
Statements
Looping Statements
(for, while, break, continue)

48.

If Statements

49.

Альтернативные вычисления: три и более вариантов действий
Пример.
• На плоскости выделены три зоны (I, II, III). Дана координата х точки.
• Определить, в какую зону попала эта точка (допущение: х не равно
границам зон (–1 и 5)

50.

Альтернативные вычисления: три и более вариантов действий
Решение.
• в программе использовать 3 неполных варианта инструкции if (без
ветви else):
if x < -1:
print('В
if x > 5:
print('В
if x > -1 and
print('В
зону III')
зону I')
x < 5:
зону II')

51.

Альтернативные вычисления: три и более вариантов действий
Решение.
• сэкономить одно слово 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

54.

while Statements

55.

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

56.

Генераторы
• Генераторы списков – возвращают список
[ 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

58.

Project 1_3A: Control Flow with Decisions and Loops

59.

Project 1_3B: Control Flow with Decisions and Loops

60.

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

61.

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

62.

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

63.

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

64.

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

65.

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

66.

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

67.

Working with Pandas
• Creating Datasets
• Importing data from files
• Exporting data

68.

Working with Matplotlib

69.

Demonstration / Exercise 1_4: Perform Input and Output
Operations

70.

Project 1_4A: Perform Input and Output Operations

71.

Project 1_4B: Perform Input and Output Operations

72.

Lesson 5: Document and Structure Code

73.

Using Functions

74.

Описание функции в Python
• Определение (описание) функции состоит из двух частей:
заголовка и тела:
def <имя функции> ([<список параметров>]):
<тело функции>
return
▫ список параметров - состоит из перечня типов и имен параметров,
разделенных запятыми, круглые скобки обязательны.
▫ тело функции – набор выражений.
Функция в Python – объект, принимающий аргументы и возвращающий значение

75.

Параметры и аргументы
• Параметр (формальный параметр) — это переменная, которая
является частью объявления функции
• Аргумент — это выражение, применяемое при вызове функции

76.

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

77.

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

78.

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

79.

Передача параметров в функцию
• Передача по значению
• Передача по ссылке
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)
print (x[0])
#3
#1
print(f1(a))
print(f2(x))
#4
# [2, 2]
print (a)
print (x[0])
#3
#2

80.

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

81.

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

82.

Анонимные функции
• Анонимная функция (лямбда-функция или лямбда-выражение):
lambda parameters: expression
• Результатом лямбда-выражения является анонимная функция.
• Когда лямбда-функция вызывается, она возвращает результат
вычисления выражения expression.
def sqr1(x):
return x**2
Обычная и лямбда-функция
выполняют одно и то же
действие, разница в синтаксисе
elements.sort(key=lambda x: x[1])
max(lst, key=lambda x: x.count("a"))
sqr2 = lambda x: x**2
# Сортировка порядковому номеру
# Элемент lst, в котором больше всего "a"

83.

Documentation Strings

84.

Demonstration / Exercise 1_5: Document and Structure
Code

85.

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

87.

Syntax Errors

88.

Logic Errors

89.

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

90.

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

91.

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)
# явное указание класса возбуждаемого исключения

93.

Logging

94.

Demonstration / Exercise 1_6: Perform Troubleshooting
and Error Handling

95.

Project 1_6A: Perform Troubleshooting and Error Handling

96.

Project 1_6B: Perform Troubleshooting and Error Handling

97.

Review
Discuss lesson exercises
Complete review questions

98.

Review Answers
Answers For Lesson Reviews
English     Русский Правила