Похожие презентации:
Ликбез по Python: Функции и работа с исключениями
1.
Mtech at glance2025
18/02/2026
1
Data Governance & Data Quality
Ликбез по Python: Функции и работа с исключениями
Владимир Кирсанов
Руководитель направления разработки инструментов для
цифровых каналов коммуникации
2.
Mtech at glance2025
Что такое функция?
Функция – это блок кода, который
выполняет определенную задачу и
может быть вызван многократно
Синтаксис
def имя_функции(параметры):
"""
Строка
документации (docstring)
"""
# Тело функции
return результат # опционально
2
3.
Mtech at glance2025
Примеры функций
# Функция без параметров
def greet():
"""Выводит приветствие"""
print("Привет, мир!")
# Вызов
greet()
# Функция с параметрами
def greet_name(name= "Петр"):
"""Приветствует по имени"""
print(f"Привет, {name}!")
# Вызов
greet_name("Анна")
greet_name()
# Функция с возвращаемым значением
def add_numbers(a, b):
"""Складывает два числа"""
return a + b
# Вызов
result = add_numbers(5, 3)
print(result)
# Неопределенное число аргументов
def sum_all(*numbers):
"""Суммирует все
переданные числа"""
total = 0
for num in numbers:
total += num
return total
# Вызов
print(sum_all(1,2,3))
print(sum_all(1,2,3,4,5))
3
4.
Mtech at glance2025
Словили ошибку
# Функция с параметрами
def greet_name(name= "Петр"):
"""Приветствует по имени"""
print(f"Привет, {name}!")
Синтаксическая!
E:\Обучение>python test_func.py
Traceback (most recent call last):
File "test_func.py", line 4, in <module>
print(f"Привет, {name}!")
NameError: name 'name' is not defined
# Функция с возвращаемым значением
def div_result(a, b):
"""Находит отношение"""
return a/b
Исключение!
# Вызов
greet()
# Вызов
div_result(5, 0)
E:\Обучение>python test_func.py
Traceback (most recent call last):
File "test_func.py", line 6, in <module>
div_result(5, 0)
File "test_func.py", line 4, in div_result
return a/b
ZeroDivisionError: division by zero
4
5.
Mtech at glance2025
Обработка ошибок
Базовая
try:
# Код, который может вызвать исключение
risky_operation()
except:
# Код, который выполняется при возникновении исключения
handle_error()
Полная
try:
# Основной код
risky_operation()
except <exception_type>:
# Код, который выполняется при возникновении исключения
handle_error()
except <exception_type>:
# Код, который выполняется при возникновении исключения
handle_error2()
else:
# Выполнится, если исключений не было
successful_operation()
finally:
# Выполнится всегда, независимо от исключений
next_operation()
5
6.
Mtech at glance2025
Примеры обработки ошибок
try:
number = int(input("Введите число: "))
result = 10 / number
print(f"Результат: {result:.2f}")
except ValueError:
print("Нужно ввести число!")
except ZeroDivisionError:
print("Деление на ноль!")
try:
x=1/0
except Exception as e:
print(f"Произошла ошибка: {e}")
print(f"Тип ошибки: {type(e).__name__}")
try:
conn = sqlite3.connect("users.db")
cursor = conn.cursor()
cursor.execute("INSERT INTO users(name) VALUES (?)", ("Alice",))
except sqlite3.Error:
conn.rollback()
print("Ошибка при записи в БД")
else:
conn.commit()
print("Данные успешно сохранены")
finally:
conn.close()
6
7.
Mtech at glance2025
Встроенные исключения
# FileNotFoundError - файл не найден
try:
with open("несуществующий_файл.txt", "r") as f:
content = f.read()
except FileNotFoundError as e:
print(f"FileNotFoundError: {e}")
# KeyError - несуществующий ключ
try:
person = {"name": "Alice"}
print(person["age"])
except KeyError as e:
print(f"KeyError: {e}")
# IndexError - неверный индекс
try:
numbers = [1, 2, 3]
print(numbers[10])
except IndexError as e:
print(f"IndexError: {e}")
# TypeError - неверный тип
try:
"строка" + 5
except TypeError as e:
print(f"TypeError: {e}")
# ValueError - неверное значение
try:
int("не число")
except ValueError as e:
print(f"ValueError: {e}")
7
8.
Mtech at glance2025
Плохой тон
# Не перехватывайте все исключения без разбора
try:
# код
except:
# Плохо!
pass
# Не игнорируйте исключения молча
try:
important_operation()
except Exception:
pass # Очень плохо!
# Не используйте исключения для обычного flow control
# Вместо этого:
if condition:
do_something()
else:
do_something_else()
8
9.
Mtech at glance2025
Хороший тон
# Конкретные исключения
try:
risky_call()
except SpecificError:
handle_error()
# Логирование ошибок
import logging
logging.basicConfig(level=logging.ERROR)
try:
risky_call()
except Exception as e:
logging.error(f"Ошибка: {e}")
# Повторная генерация исключений
try:
process_data()
except ValueError as e:
logging.error("Не удалось обработать данные")
raise # Повторно генерируем то же исключение
9
10.
Mtech at glanceВремя делать
без предела
2025
Программирование