Similar presentations:
Лекция 1
1. Знакомство с Python Синтаксис и особенности. Интерпретаторы и IDE. Модули
Паршинцева Л.С.,к.э.н., доцент,
доцент кафедры «Статистика»
Контакты:
Адрес электронной почты – ls_parshintseva@guu.ru
2. Языки программирования и их виды
Разработка программВыполнение команд
программы
Компьютер делает то,
что требуется
Низкоуровневы
е
C, Assembly и
другие
Среднеуровневые
C++, Rust и
другие
Высокоуровневые
Python, Java,
JavaScript и
другие
Языки
программирования
Языки
программирования
Программа – набор команд для
компьютера
Компилируемые
C, C++, Swift, Go,
Pascal и другие
Интерпретируемые
Python, PHP,
JavaScript, Lava,
MATLAB и другие
Гибридные (JITкомпилируемые)
Java, C#, Julia
2
3. Что такое интерпретатор и компилятор?
Способыпреобразования и
выполнения исходного
кода
Компилятор
Интерпретатор
Переводит весь исходный
модуль на машинный язык
Последовательно переводит
на машинный язык каждый
оператор исходного модуля и
сразу же выполняет его
Python-интерпретатор
переводит код программы в
байт-код, который
запускается на виртуальной
машине Python (PVM).
Интерпретатор — это программный
слой между исходным кодом и
компьютером.
4. Характеристики языков программирования
Тип языкаПреимущества
Недостатки
Компилируемый
Высокая скорость выполнения
Оптимизация кода до запуска
Выявление ошибок на этапе
компиляции
Длительный процесс компиляции
Меньшая гибкость при отладке и
изменениях
Платформенная зависимость
скомпилированного кода
Интерпретируемый
Быстрая разработка и отладка
Портативность кода (выполняется
там, где есть интерпретатор)
Гибкость и возможность
динамического исполнения
Ниже скорость выполнения
Возможны ошибки во время
выполнения
JIT-компилируемые
Баланс между скоростью и
гибкостью
Оптимизация часто используемых
участков кода
Более высокая
производительность, чем у
интерпретируемых
Дополнительная нагрузка во время
исполнения
Сложность реализации JITкомпилятора
4
5. Области применения языка программирования Python
Web-разработкаАнализ данных и машинное обучение
Игровая индустрия
Системное программирование
Игровая индустрия
Автоматизация процессов
Базы данных
5
6. Где писать программу?
Где угодно, даже в «Блокноте». Главное, чтобы файл спрограммой сохранялся как текст с расширением .py
Скачать интерпретатор:
https://www.python.org/
Интерпретатор лучше
установить в папку, в пути
к которой будут только
символы английского
алфавита
Написанную программу можно
запустить из командной строки
командой:
python program.py
6
7. Интерпретаторы и их базовая схема выполнения программы
Программа, которая выполняет код, написанный на языке программирования, преобразуя его вмашинный код или команду, которую может понять операционная система.
Чтение исходного кода
Вывод результатов
CPython
PyPy
Лексический анализ
(токенизация)
Интерпретация/выполн
ение программы
Jython
IronPython
Синтаксический анализ
(создание AST)
Семантический анализ
(проверка на ошибки)
Другие
7
8. Интегрированная среда разработки (IDE)
Программное приложение, которое помогает программистам эффективно разрабатыватьпрограммный код.
Компоненты
IDE
Текстовый редактор
Отладчик
Транслятор (компилятор и/или
интерпретатор)
Средства управления версиями
Расширения для решения
дополнительных задач разработки
Графический интерфейс
PyCharm
Spyder
Thonny
VSCode
Jupyter
Notebook
Другие
Тестирование
8
9. Интерпретаторы и IDE Python для работы с большими данными
Возможностииспользования для работы
с большими данными
Интерпретаторы / IDE online
Интерпретаторы / IDE offline
Используется для работы с
большими данными
Google Colab
(https://colab.research.google.com/)
Jupyter Notebook (JupyterHub)
(jupyter.org)
СPython (python.org)
PyCharm Community Edition
(jetbrains.com/pycharm)
Visual Studio Code (VSCode)
(code.visualstudio.com)
Anaconda (anaconda.com)
PyPy (https://www.pypy.org)
Spyder (https://www.spyderide.org)
Ограниченные ресурсы для
работы с большими данными
Replit (replit.com)
PythonAnywhere
(pythonanywhere.com)
Jython (https://www.jython.org)
IronPython (https://ironpython.net)
Не подходит для работы с
большими данными
Trinket (trinket.io)
Thonny (thonny.org)
MicroPython
(https://micropython.org)
9
10. Anaconda
Anaconda — это готовый дистрибутив Python и R, созданный для удобной работы с анализомданных, научными вычислениями и машинным обучением.
1500 заранее
установленных
библиотек
Собственный
менеджер пакетов и
виртуальных сред —
Conda
Графический
интерфейс Anaconda
Navigator
Работает на основных
операционных системах
и распространяется как
свободное программное
обеспечение с открытым
исходным кодом
10
11. Иcтория создания Python
Названв честь
комедии
«Летающий
цирк Монти
Пайтона»
Основная идея: язык
программирования должен быть
простым, кратким, достаточно
хорошим для того, чтобы
справляться с нужными задачами и
иметь гибкую модель
расширяемости.
1982-1987 гг:
Прототип
Python – ABC
(1982-1987)
1989 г: Гвидо
ван Россум
разработал
проект
будущего
Python
1991 г: создан
дистрибутив
и опубликован
код языка
Python через
сеть Usenet.
ЛОГОТИПЫ
12. Гибкая модель расширяемости
PEP-индекс — задокументированный регламентпо внесению изменений в структуру и синтаксис языка.
Любой разработчик
Если
большинство
«за» –
предложение
вступает в силу
аргументированные предложения по
улучшению в письменной форме
голосование и
обсуждение
участниками
Официальный
сайт сообщества
python.org
Редакторы Pythonсообщества
предварительная
проверка
13. Официальная спецификация языка Python и основные правила синтаксиса
PEP 8 (Python Enhancement Proposal 8): https://peps.python.org/pep-0008/Официальная документация Python: https://docs.python.org/3/
Отступы и
пробелы
Импорт
Использование
двоеточий
Кавычки
Объявление
переменных
Сравнение
значений
Другие правила
синтаксиса
Комментарии
Проверка кода в документе с именем
my_document.py на соответствие PEP 8.
flake8 my_document.py
Автоматически форматирует код в
документе с именем my_document.py в
соответствии с PEP 8.
black my_document.py
Анализирует код в документе с именем
my_document.py на ошибки и стиль
pylint my_document.py
13
14. Основные правила синтаксиса
Отступы:if x > 10:
print("x is greater than 10") # 4 пробела
X
if x > 10:
print("x is greater than 10") # Неправильный синтаксис
Пробелы:
X
spam(ham[1], {eggs: 2}) # Лишние отступы отсутствуют
foo = (0,) # Лишние отступы отсутствуют
i= +- 1
spam( ham[ 1 ], { eggs: 2 } ) # Лишние отступы
foo = (0, ) # Лишние отступы
14
15. Основные правила синтаксиса
Объявление переменных:user_name = "Alice" # правильное имя переменной
UserName = "Bob" # другое имя переменной, с другой капитализацией
X
user name = "Alice" # в имени пропущен знак (_)
1name = "Bob"
# имена не могут начинаться с цифры
Комментарии:
# Однострочный комментарий. Всё после символа # игнорируется
интерпретатором.
""" Многострочный комментарий (строка документации) оформляется с
помощью символов """. Используется для описания больших блоков
кода, функций или классов. Символы """ , которые завершают
комментарий, должны быть на отдельной строке.
15
16. Основные правила синтаксиса
Кавычки:correct1 = "Внутри 'одинарные' кавычки" # Парность кавычек
correct2 = "Он сказал: \"Привет!\"" # Экранированные двойные кавычки
X
error1 = "Внутри 'одинарные' кавычки # Непарные кавычки
error2 = "Он сказал: "Привет!"" # Двойные внутри двойных без экранирования
Использование двоеточий для обозначения начала блока
кода после ключевых слов if, for, while, def, class:
def greet():
print("Hello!") # Отступ в следующей строке
X
def greet()
print("Hello!") # Неправильный синтаксис
16
17. Основные правила синтаксиса
Сравнение значений:if age == 18:
print("Совершеннолетний")
X
if age = 18: # = вместо ==
print(«Ошибка")
Импорт:
import os
import sys # импорт в отдельных строках
X
import sys, os # импорт в одной строке
17
18.
Библиотека (модуль) в PythonНабор методов (функций) в рамках определенной темы.
Команда для установки пакетов и
библиотек из Python Package Index
(PyPI) или других репозиториев
Для Jupyter Notebook и Google
Команда импорта библиотеки в
код
Ключевое слово (команда) import
(в сочетании с ключевыми
словами as и from)
18
19. Основные библиотеки Python для анализа больших данных
Библиотека (полное Устоявшеесянаименование)
сокращение
Назначение в контексте больших
данных
Ссылка на
документацию
Pandas
pd
работа с табличными данными,
подготовка и очистка данных
https://pandas.pydata.org
/pandas-docs/stable/
NumPy
np
работа с многомерными массивами,
линейная алгебра
https://numpy.org/doc/st
able/
Dask
dd
параллельная обработка больших
данных, работа с данными, не
помещающимися в память
https://docs.dask.org/en/
stable/
PySpark
spark
распределенная обработка данных с
использованием Spark
https://spark.apache.org/
docs/latest/api/python/
Vaex
vaex
оптимизированная работа с большими
датасетами
https://vaex.io/docs/
h5py
h5py
предоставляет интерфейс для работы с
файлами HDF5.
http://www.h5py.org/
Пример кода для импорта пакета
Pandas
19
20. Переменные в Python
Переменная в Python – именованные контейнеры для хранения данных.Должны начинаться с буквы или знака
подчеркивания
В именах могут использоваться буквы,
цифры и знаки подчеркивания
Для создания переменной используется
оператор присваивания (=)
Нельзя использовать знаки препинания
и специальные символы
ПРИМЕР
Python чувствителен к регистру
Имя должно быть задано только с
использованием букв английского алфавита
message = "Добрый день" # Создание переменной
del message # Удаление переменной
20
21. Типы данных Python
Noneнеопределенное значение переменной
Логические переменные
int –целое число
Числа
float – число с плавающей точкой
Типы данных Python
complex – комплексное число
Списки и кортежи
Встроенные
типы данных
Невстроенные
типы данных
Строки
list – список
tuple - кортеж
str
bytes – байты
Бинарные списки
bytearray – массивы байт
memoryview – для доступа к внутренним данным
Множества
Словари
set – множество
frozenset – неизменяемое множество
dict – словарь
21
22. Проверка типа переменной и его изменение
Проверка типа:Функция type(object) возвращает текущий тип переменной.
Функция isinstance(object,classinfo) позволяет проверить принадлежность объекта к классу.
ПРИМЕРЫ
var = 5 # Создание переменной
print("Исходный тип:", type(var)) # Определение типа переменной
isinstance(var, int) # Проверка на принадлежность переменной к целым
числам
var = str(var) # Изменение типа переменной на строку
print("Новый тип:", type(var))
# Попытка преобразования строковой переменной в целочисленную переменную
try:
var = int(var)
print("Успешное преобразование:", var, type(var))
except ValueError:
print("Ошибка: строка не может быть преобразована в число")
22
23. Тип int в Python
int (целое число) — неизменяемый тип данных для представления целых чисел (положительных,отрицательных и нуля).
Создание целых чисел
Арифметические операции
# Десятичные числа
a = 42
b = -100
c = 0
# Двоичные (префикс 0b)
binary = 0b1010 # 10 в десятичной
# Восьмеричные (префикс 0o)
octal = 0o52 # 42 в десятичной
# Шестнадцатеричные (префикс 0x)
hexadecimal = 0x2A # 42 в десятичной
print(a, binary, octal, hexadecimal) #
Вывод: 42 1 0 42 42
x = 10
y = 3
p rin t(x + y ) # Сложение: 1 3
p rin t(x - y ) # Вычитание: 7
p rin t(x * y ) # Умножение: 30
p rin t(x ** y ) # Возведение в степень: 1 000
p rin t(x / y ) # Деление (возвращает flo a t): 3. 333. . .
23
24. Методы и функции для работы с int
Преобразование типов# Из строки
num_str = "123"
num_int = int(num_str) # 123
# Из float
pi_int = int(3.1415) # 3 (отбрасывает дробную часть)
# С указанием системы счисления
binary_str = "1010"
dec_num = int(binary_str, 2) # 10
hex_str = "FF"
dec_num = int(hex_str, 16) # 255
Полезные функции
n = -42
abs_n = abs(n) # Модуль: 42
pow_n = pow(2, 8) # 2^8 = 256
rounded = round(3.7) # Округление: 4
# Минимум/максимум
print(min(5, 2, 8)) # 2
print(max(5, 2, 8)) # 8
24
25. Особенности работы с большими числами
Python автоматически обрабатывает большие числа# Факториал 1 00 (1 5 8 -значное число)
import math
big_num = math.factorial(100)
print(big_num) # 933262154439...000000
# Проверка типа
print(type(big_num)) # <class 'int'>
# Операции с гигантскими числами
huge = 10**1000 # Число с 1 001 цифрой
print(huge // 2) # 500...0
Некоторые особенности и нюансы
Деление: / всегда возвращает float : 10 / 2 → 5.0 //
возвращает int при целочисленном результате: 10 // 2 → 5
Разделители для удобства чтения
million = 1_000_000
print(million) # 1000000
Важные функции модуля math для int
import math
print(math.gcd(48, 18)) # Наибольший общий делитель: 6
print(math.ceil(4.2)) # Округление вверх: 5
print(math.floor(4.9)) # Округление вниз: 4
print(math.factorial(5)) # 120
print(math.isfinite(10**1000)) # Проверяет, является ли число конечным
25
26. Тип float в Python
float (число с плавающей точкой) — тип данных для представления вещественных чисел (дробных,экспоненциальных).
Создание float чисел
# Явное указание
a = 3.14
b = -0.001
c = 2.0
# Научная нотация
d = 1.23e-4 # 0.000123
e = 5.67e8 # 567000000.0
# Преобразование
f = float("3.14") # Из строки
g = float(42) # Из int: 42.0
print(a, b, d, f) # Вывод: 3. 1 4 -0. 001 0. 0001 2 3 3. 1 4
Арифметические операции
x = 10.5
y = 3.2
print(x + y) # Сложение: 1 3. 7
print(x - y) # Вычитание: 7. 3
print(x * y) # Умножение: 33. 6
print(x ** 2) # Возведение в степень: 1 1 0. 2 5
print(x / y) # Деление: ≈3. 2 8 1 2 5
print(x // y) # Целочисленное деление: 3. 0
print(x % y) # Остаток: 1 0. 5 % 3. 2
Операции сравнения
a = 0.3
b = 0.3
print(a == b) # True
26
27. Тип float в Python
Проблемы точности (машинная эпсилон)Полезные константы и функции
# Классический пример
p rin t(0. 1 + 0. 2 ) # 0. 30000000000000004
# Причина: 0. 1 в двоичной системе - бесконечная дробь
# 0. 1 ₁₀ = 0. 0001 1 001 1 001 1 001 1 001 1 . . .
Решение: Использовать округление или модуль decimal
для точных вычислений
import math
print(math.pi) # ≈3.141592653589793
print(math.e) # ≈2.718281828459045
print(math.tau) # 2*pi ≈6.283185307179586
print(math.sqrt(25)) # 5.0
print(math.log(100, 10)) # 2.0 (логарифм)
print(math.fabs(-7.5)) # 7.5 (модуль)
Округление
Для финансовых расчетов используйте decimal
num = 3.14159265
print(round(num, 2)) # 3.14
from decimal import Decimal
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b == Decimal('0.3')) # True
Преобразования
# float → int (отбрасывает дробную часть)
print(int(3.9)) # 3
# float → str
print(str(3.14)) # "3.14"
27
28. Список list
Списки – это упорядоченные изменяемые коллекции объектов произвольных типов.ПРИМЕРЫ
# Создание пустого списка
e m p ty _ lis t = []
# Создание списка с элементами
n u m b e rs = [1 , 2 , 3, 4, 5 ] # Элементы числа
fru its = ["яблоко", "банан", "апельсин"] # Элементы строковые данные
rn d _ lis t = [1 0, "текст", 3. 1 4, T ru e ] # Элементы разных типов
# Создание списка на основе строки
lis t('a b c ')
28
29. Основные действия со списками
ФункцияХарактеристика
list.append(x)
Добавляет элемент в конец списка
list.extend(L)
Расширяет список list, добавляя в конец все элементы списка L
list.insert(i, x)
Вставляет на i-тый элемент значение x
list.remove(x)
Удаляет первый элемент в списке, имеющий значение х.
list.count(x)
Возвращает количество элементов со значением х
list.reverse()
Разворачивает список
list.clear()
Очищает список
ПРИМЕРЫ
n u m b e rs = [1 , 2 , 3, 4, 5 ]
p rin t(n u m b e rs [0]) # Так как индексация начинается с 0, на экран будет выведена цифра 1
p rin t(n u m b e rs [-1 ]) # При использовании отрицательных индексов отсчет начинается с конца
n u m b e rs . a p p e n d (6) # Добавить цифру 6 в конец списка
n u m b e rs . in s e rt(3, 0) # Вставить на позицию 3 цифру 0
d e l n u m b e rs [3] # Удалить значение с индексом 3
29
30. Кортеж tuple()
Кортеж – это неизменяемая структура данных.Для чего используются?
Защита от изменений
Возможность использовать
в качестве словаря
Занимает меньше памяти
ПРИМЕРЫ
# Явное создание
tp l1 = (1 , 2 , 3)
tp l2 = tu p le ((1 , 2 , 3)) # Создание кортежа из цифр
tp l3 = tu p le ('Строка') # Создание кортежа из строки
# Без скобок (кортеж определяется запятыми)
tp l3 = 4, 5 , 6
# Кортеж с одним элементом (обязательна запятая)
tp l4 = (7, )
30
31. Тип str в Python
Строка (str) — неизменяемая последовательность символов Unicode. Это один из самых частоиспользуемых типов данных в Python.
Создание строк
Индексация и срезы
text = "Python"
# С одинарными кавычками
s1 = 'Привет'
print(text[0]) # 'P' (первый символ)
= "Анна"
print(text[-1])
# 'n' (последний символ)
# С двойными кавычками name
greeting = "Привет, " + name
+ "!" #
s2 = "Python"
Конкатенация
print(text[2:5]) # 'tho' (срез с 2 до 4
# Многострочные строки (тройные кавычки)
индекса)
s3 = '''Первая строка
print(text[::2]) # 'Pto' (каждый второй
Вторая строка'''
символ)
# Специальные символы
Конкатенация и повторение
s4 = "Текст с \nпереводом строки и \tтабуляцией"
name = "Анна"
# Сырые строки (raw)
greeting = "Привет, " + name + "!" #
s5 = r"C:\new_folder\text.txt" #
Конкатенация
Экранирование игнорируется
stars = "*" * 30 # Повторение
print(s1, s2, s4, s5, sep="\n---\n")
print(greeting)
31
print(stars)
32. Множества set
Множество – это контейнер, содержащий не повторяющиеся элементы в случайном порядке.Основные свойства
Уникальность
Неупорядоченность
ПРИМЕРЫ
m y _ s e t = {1 , 2 , 3} # Создание множества через {}
m y _ s e t2 = s e t([3, 4, 5 ]) # Создание множества из списка
m y _ s e t3 = s e t('Строка') # Создание множества из строки
e m p ty _ s e t = s e t() # Пустое множество
Изменяемость
32
33. Основные действия с множествами
Функцияset.add(elem)
Характеристика
Добавляет элемент в множество
set.remove(elem)
Удаляет элемент из множества. Ke y E rro r, если такого элемента не существует.
set.discard(elem)
Удаляет элемент, если он находится в множестве.
set.pop()
len(s)
Удаляет первый элемент из множества. Так как множества не упорядочены,
нельзя точно сказать, какой элемент будет первым.
Подсчитывает число элементов в множестве.
x in s
Проверяет, принадлежит ли x множеству s
set1 == set2
Все элементы s e t1 принадлежат s e t2 , все элементы s e t2 принадлежат s e t1
ПРИМЕРЫ
m y _ s e t. a d d (4) # добавит в конец множества значение 4
m y _ s e t. re m o v e (2 ) # удалит значение 2 из множества
m y _ s e t. d is c a rd (5 ) # Ничего не произойдет, так как в множестве нет такого элемента
33
34. Тип dict в Python
Словарь (dict) — изменяемая коллекция пар "ключ-значение".Создание словарей
# Пустой словарь
empty_dict = {}
empty_dict_v2 = dict()
# С элементами
person = {"name": "Alice", "age": 30, "city": "London"}
grades = dict(Alice=95, Bob=87, Carol=92)
# Из последовательностей
keys = ['a', 'b', 'c']
values = [1, 2, 3]
mapped = dict(zip(keys, values)) # {'a': 1, 'b': 2, 'c': 3}
Доступ к элементам
person = {"name": "Alice", "age": 30}
print(person["name"]) # "Alice"
# print(person["job"]) # KeyError (ключ не существует)
print(person.get("age")) # 30
34
35. Тип dict в Python
Изменение элементовperson["age"] = 31 # Изменение существующего
person["job"] = "Engineer" # Добавление нового элемента
# Обновление нескольких значений
person.update({"age": 32, "email": "alice@mail.com"})
Основные действия с множествами
Функция
Что делает?
set.add(elem)
Добавляет элемент в множество
set.remove(elem)
Удаляет элемент из множества. KeyError, если такого элемента не существует.
set.discard(elem)
Удаляет элемент, если он находится в множестве.
set.pop()
Удаляет первый элемент из множества. Так как множества не упорядочены,
нельзя точно сказать, какой элемент будет первым.
len(s)
Число элементов в множестве.
x in s
Принадлежит ли x множеству s
set1 == set2
Все элементы set1 принадлежат set2, все элементы set2 принадлежат set1
35
36. СПАСИБО ЗА ВНИМАНИЕ!
Паршинцева ЛидияСергеевна
ls _ p a rs h in ts e v a @g u u . ru
programming