Исключения и Модули Курьян Кристина
Outline Типы ошибок Исключения Обработка исключений Генерация исключений Исключения, определяемое пользователем «Страхование» от ошибок
Типы Ошибок Синтаксические ошибки Исключения
Синтаксические ошибки >>> while 1 print Hello world File " ", line 1 while 1 print Hello world ^ SyntaxError: invalid syntax
Исключения Ошибки, обнаруженные во время выполнения. Пример: >>> 10*(1/0)
Обработка исключений(1) Ключевое слово try, except >>> while 1:... try:... x = int(raw_input(... «Пожалуйста, введите целое число"))... break... except ValueError:... print «Вы ошиблись..."...
Обработка исключений(2). Несколько типов исключений. Пример:... except (RuntimeError, TypeError, NameError):... pass Или... except RuntimeError:... pass... except TypeError :... pass
Обработка исключений(3). Else Пример: for arg in sys.argv[1:]: try: f = open(arg, r) except IOError: print Exception, arg else: print arg, Exception did not throw f.close()
Генерация исключений Пример: >>> raise NameError(HiThere) Traceback (innermost last): File " ", line 1 NameError: HiThere
Исключения, определяемые пользователем Строковые выражения для обозначения имени Класс исключения
Исключения, определяемое пользователем Пример: >>> class MyError(Exception): pass... >>> try:... raise MyError(2*2)... except MyError, e:... print MyError, value is, e... MyError, value is 4 >>> raise MyError(1) Traceback (innermost last): File " ", line 1 __main__.MyError: 1
«Страхование» от ошибок «Страховочная» ветвь finally Пример: >>> try:... raise KeyboardInterrupt()... finally:... print Bye! Bye! Traceback (innermost last): File " ", line 2 KeyboardInterrupt
Outline Создание и использование модулей Поиск модулей «Компилированные» модули Стандартные модули
Создание и использование модулей(1) fibo.py def fib(n): Последовательность чисел Фибоначчи < n a, b = 0, 1 while b < n: print b, a, b = b, a+b
Создание и использование модулей(2) 1. >>> import fibo >>> fibo.fib(1000) >>> fib = fibo.fib
Создание и использование модулей(3) 2. >>> from fibo import fib >>> fib(500) >>> from fibo import * >>> fib(500)
Поиск модулей Текущий каталог PYTHONPATH
«Компилированные» модули «байт-компилированный» модуль Опция –о или переменная окружения PYTHONOPTIMIZE имеет не пустое значение Опция –оо
Стандартные модули Библиотека стандартных модулей Модуль sys Переменные sys.ps1 и sys.ps2(для первичного и вторичного приглашения) sys.path(список строк с именами каталогов, в которых происходит поиск модулей)
Q&A