Читайте также:
|
|
При возникновении ошибки в программе возбуждается исключение и выводится трассировочная информация, такая, как показано ниже:
Трассировочная информация позволяет определить тип ошибки и место, где она возникла. Обычно ошибки приводят к аварийному завершению программы. Однако имеется возможность перехватить и обработать исключение – с помощью инструкций try и except, как показано ниже:
try:
f = open(“file.txt”,”r”)
except IOError as e:
print e
Если будет возбуждено исключение IOError, информация о причинах появления ошибки будет записана в переменную e и управление будет передано первой инструкции в блоке except. Если возникнет какое-то другое исключение, оно будет передано объемлющему блоку кода (если таковой имеется). Если операция выполнена без ошибок, инструкции в блоке except будут просто игнорироваться. После обработки исключения выполнение программы продолжится с первой инструкции, следующей за последней инструкцией в блоке except. Программа не возвращается в то место, где возникло исключение.
Возбудить исключение вручную можно с помощью инструкции raise. Для этого инструкции raise можно передать один из встроенных классов исключений, например:
raise RuntimeError("Компьютер говорит нет")
Модули
Часто по мере роста программы возникает желание разбить ее на несколько файлов, чтобы упростить ее разработку и дальнейшее сопровождение. Язык Python позволяет помещать определения в файлы и использовать их как модули, которые могут импортироваться другими программами и сценариями. Чтобы создать модуль, необходимо поместить соответствующие инструкции и определения в файл с тем же именем, которое будет присвоено модулю. (Обратите внимание, что имя файла должно иметь расширение.py.) Например:
# файл: div.py
def divide(a, b):
q = a/b
# Если a и b – целые числа, q будет целым числом
r = a - q*b
return (q, r)
Использовать модуль в других программах можно с помощью инструкции import:
import div
a, b = div.divide(2305, 29)
Инструкция import создает новое пространство имен и внутри этого пространства имен выполняет все инструкции, находящиеся в файле с расширением.py. Чтобы получить доступ к содержимому этого пространства имен после импортирования, достаточно просто использовать имя модуля в качестве префикса, как это сделано в вызове функции div.divide() в преды дущем примере.
Если потребуется импортировать модуль под другим именем, достаточно добавить в инструкцию import дополнительный квалификатор as, как показано ниже:
import div as foo
a,b = foo.divide(2305,29)
Чтобы импортировать некоторые определения в текущее пространство имен, можно воспользоваться инструкцией from:
from div import divide
a,b = divide(2305,29) # Префикс div больше не нужен
Чтобы загрузить в текущее пространство имен все содержимое модуля, можно использовать следующий прием:
from div import *
При вызове функции dir() с именем модуля она выведет содержимое указанного модуля, что делает эту функцию удобным инструментом для экспериментов в интерактивной оболочке:
>>> import string
>>> dir(string)
[‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’, ‘_idmap’, ‘_idmapL’, ‘_lower’, ‘_swapcase’, ‘_upper’, ‘atof’, ‘atof_error’, ‘atoi’, ‘atoi_error’, ‘atol’, ‘atol_error’, ‘capitalize’, ‘capwords’, ‘center’, ‘count’, ‘digits’, ‘expandtabs’, ‘find’,
...
>>>
Дата добавления: 2014-12-15; просмотров: 119 | Поможем написать вашу работу | Нарушение авторских прав |