Similar presentations:
Области применения Python
1.
Programming Using Python2.
Области применения Python3.
Источники информации• 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 Commands6.
Introduction: Installing and Running Python Commands7.
IPython• IPython – это интерактивная оболочка для с широким набором
возможностей и ядро для Jupyter.
• Jupyter notebook является графической веб-оболочкой для IPython,
которая расширяет идею консольного подхода к интерактивным
вычислениям.
8.
IPython9.
Anaconda10.
Jupyter NotebookКак настроить и работать с Jupyter Notebook
11.
Jupyter Notebook run from an InternetGoogle 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 Navigator15.
Choosing an IDE16.
Visual Studio Code17.
JetBrains PyCharm18.
19.
Virtualizing The Python Environmenthttps://docs.python.org/3/tutorial/venv.html
20.
Running Python Commands21.
Useful Python Commands22.
IPython magic commands• %lsmagic – список всех команд
• %matplotlib inline – для отображения графиков по умолчанию
• %%html – визуализирует ячейку как блок HTML
23.
Demonstration / Exercise 1_0: Installing and Running PythonCommands
24.
Lesson 1: Perform Operations using Data Types andOperators
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.
OperatorsOperator
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 PrecedenceOperators: (Evaluated from top to bottom)
Brackets
()
Exponent (Power)
**
Multiplication, Division, Modulo
* / %
Addition, Subtraction
+ -
Comparison
> >= < <=
35.
Array Data Structures36.
Demonstration / Exercise 1_1: Perform Operations usingData Types and Operators
37.
Project 1_1A: Perform Operations using Data Types andOperators
38.
Project 1_1B: Perform Operations using Data Types andOperators
39.
Lesson 2: Perform Operations Using Modules and ToolsPython 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 ModulesName
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 Modules43.
Help with Modules44.
Demonstration / Exercise 1_2: Perform Operations UsingModules and Tools
45.
Project 1_2A: Perform Operations Using Modules andTools
46.
Project 1_2B: Perform Operations Using Modules & Tools47.
Lesson 3: Control Flow with Decisions and LoopsConditional Statements
(if, else, elif)
Control Flow
Statements
Looping Statements
(for, while, break, continue)
48.
If Statements49.
Альтернативные вычисления: три и более вариантов действийПример.
• На плоскости выделены три зоны (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 Statements54.
while Statements55.
Итераторы• Итератор - специальный объект, предоставляющий навигацию по
другим (итерируемым) объектам
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 withDecisions and Loops
58.
Project 1_3A: Control Flow with Decisions and Loops59.
Project 1_3B: Control Flow with Decisions and Loops60.
Lesson 4: Perform Input and Output OperationsData
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 Matplotlib69.
Demonstration / Exercise 1_4: Perform Input and OutputOperations
70.
Project 1_4A: Perform Input and Output Operations71.
Project 1_4B: Perform Input and Output Operations72.
Lesson 5: Document and Structure Code73.
Using Functions74.
Описание функции в 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 Scope1. Локальная (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 Strings84.
Demonstration / Exercise 1_5: Document and StructureCode
85.
Project 1_5: Document and Structure Code86.
Lesson 6: Perform Troubleshooting and Error HandlingErrors:
syntax
logic
runtime
https://docs.python.org/3/tutorial/errors.html
87.
Syntax Errors88.
Logic Errors89.
Runtime ErrorsСтратегии защиты:
• LBYL
Look Before You Leap
• EAFP
It’s Easier To Ask Forgiveness
Than Permission
90.
Error Handlingtry/except
Иерархия классов-исключений
91.
Error Handlingtry/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 Optionsraise exception(args)
# явное указание класса возбуждаемого исключения
93.
Logging94.
Demonstration / Exercise 1_6: Perform Troubleshootingand Error Handling
95.
Project 1_6A: Perform Troubleshooting and Error Handling96.
Project 1_6B: Perform Troubleshooting and Error Handling97.
ReviewDiscuss lesson exercises
Complete review questions
98.
Review AnswersAnswers For Lesson Reviews