Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты ВвИТ, СиСС, Экзамен 3 сем, 2021.docx
Скачиваний:
36
Добавлен:
21.01.2022
Размер:
41.28 Кб
Скачать

26. У вас есть блок try/except, который перехватывает все исключения. Как правильно вывести трейсбек, но чтобы при этом программа продолжила функционировать?

Пример программы:

import traceback

try:

any_func()

except Exception:

traceback.print_exc()

print("Все хорошо, программа продолжает функционировать")

27. Обработка множественных исключений в python и ее корректная реализация. Как функционирует блок else в таком случае?

Питон позволяет нам объявлять множественные исключения с помощью оператора except.

try:

#block of code

except(<Exception 1>,<Exception 2>,<Exception 3>,...<Exception n>)

#block of code

else:

#block of code

Функция else:

Блок else будет выполнен, если в блоке try нет исключений.

28. Что такое менеджер контекста в python? Какие задачи он выполняет при работе с различными файлами? Можно ли дублировать его работу через try/except/finally?

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

Пример :

with open('hello.txt', 'a') as file:

file.write('\nHello world!')

closed = file.closed

print("Is the file closed?", closed)

Is the file closed? True

С with (контекстным менеджером) можно открыть/закрыть подобный файл.

Еще пример (менеджер контекста открывает файл и создаёт объект, с которым дальше будет производиться работа. Завершая операцию и любые исключения, выброшенные в процессе выполнения операции, менеджер контекста закроет файл. Поскольку файлы являются совместно используемыми ресурсами, критически важно, чтобы мы освободили их после того, как выполним операции, чтобы другие процессы получили к ним доступ.):

try:

file = open('hello.txt')

except Exception:

raise

finally:

file.close()

try/except/finally:

from threading import Lock

with Lock():

pass

lock = Lock()

lock.acquire()

try:

# выполнение операций

except Exception:

# обработка исключений

finally:

lock.release()

Пример - работа с данными в многопоточных проектах.

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

Решение - блокировка потока, чтобы уменьшить беспорядок в данных. Цель - получить полный контроль над ресурсами на временной основе. Поэтому лучше всего применить оператор with.

29. Что такое итератор в python? Какие два метода позволяют реализовать протокол итерации для объекта класса и что они должны возвращать?

Итератор в программировании - объект, позволяющий проходить через всю последовательность, вне зависимости от ее реализации.

Итератор в питоне - объект, выполняющий протокол итератора, который состоит из двух методов: iter() и next(). Первый возвращает объект итератор, а второй возвращает следующий элемент из последовательности.

Преимущества итераторов:

-Чистый код

-Могут работать с бесконечными последовательностями

-Экономия ресурсов