Это старая версия документа!
В Python исключения используются не только в случае ошибки но при каких либо событиях, например конец списка (ValueError)
try: ... except [ [as ]]: ... # Блоков может быть несколько else: ... # Выполняется если исключения не было finally: ... # Выполняется в любом случае
try: ... except (NameError, IndexError, EsheError) as err: ... # обработка нескольких исключений print(err.__class__.__name__)
Более подробную инфу по исключению можно получить в tracebask.exc_info(), можно даже трассировку делать оО
Протокол «Менеджеров контекста» гарантирует выполнение завершающих действий, например закрытие файла, даже при исключениях.
Не совсем понял отличия от try..finally ..
В классе, который используется в этом блоке, должны быть еще спец функции enter() и exit()
Все встроенные исключения являются классами, благодаря этому сохраняется вложенная структура
Для инициирования исключения предназначены функции: raise и assert
В первом случае указывается экземпляр (или объект) класса исключения, можно передавать параметры и т.д.
Во втором, делается проверка выражения и в случае «False», вызывается исключение
class myError(Exception): ... try: raise myError("Описание исключения") except myError as err: ... ############## try: assert x>= 0, "Сообщение об ошибке" except AssertionError as err: print(err) # Покажет сообщение об ошибке
Класс генерирующий последовательности каких либо значений. Могут быть полезны например в циклах for
В таком классе нужно переопределить спец методы: iter() (флаг такого класса и инициализация за одно) и next() (вызывается на каждой итерации), для окончания следует вызывать исключение «StopIteration»
Могут выступать как последовательности (списки/кортежи) или отображения (словари), можно обращаться к элементам по индексу (ключу)
Набор каких-либо именованных значений, аналогичен перечислениям из С
from enum import Enum class Versions(Enum): v2_7= "2.7" v3_6= "3.7"