16. СТАНДАРТНЫЕ ФАЙЛЫ ВВОДА/ВЫВОДА ДАННЫХ
И ВЫВОДА ОШИБОК
В интерпретаторе предусмотрены три стандартных объекта
файла, которые известны под названием стандартного файла ввода
данных, стандартного файла вывода данных и стандартного файла
вывода ошибок и доступны в модуле sys под именами sys.stdin,
sys.stdout и sys.stderr соответственно. В частности, stdin – это объ-
ект файла, соответствующий входному потоку символов, поступаю-
щему в интерпретатор, stdout – это объект файла, который получает
вывод, выработанный оператором print, a stderr – это файл, который
получает сообщения об ошибках. Чаще всего stdin предполагает ввод
с клавиатуры, a stdout и stderr – вывод текста на экран.
Методы, описанные в предыдущей главе, могут применяться
для выполнения ввода/вывода произвольных данных с участием
29
пользователя. Например, следующая функция считывает строку вво-
да из стандартного файла ввода:
def gets():
text = " "
while 1:
с = sys.stdin.read(1)
text = text + с
if с == '\n' :
break
return text
Для чтения строки текста из файла stdin может также приме-
няться встроенная функция raw_input(prompt):
s = raw_input("type something : ")
print "You typed '%s'" % (s,)
И наконец, прерывания с клавиатуры (для выработки которых
часто применяется комбинация клавиш ) активизируют ис-
ключение Keyboardlnterrupt, которое может быть перехвачено с ис-
пользованием обработчика исключений.
17. ФУНКЦИИ ДЛЯ РАБОТЫ С АТРИБУТАМИ
У объектов в языке Python могут быть атрибуты (в терминоло-
гии языка C++ – члены-данные и члены-функции). Следующие две
программы эквивалентны:
# первая программа:
class A: pass
а = А()
a.attr = 1
try: print a.attr
except: print None
del a.attr
# вторая программа:
class A: pass
30
а = А()
setattr(a, 'attr', 1)
if hasattrfa, 'attr'): getattr(a, 'attr')
else: print None
delattr(a, 'attr')
18. МОДУЛИ
По мере того как программы возрастают в размерах, может воз-
никнуть необходимость разбить их на несколько файлов для удобства
сопровождения. Для этого в языке Python предусмотрена возмож-
ность поместить в файл определения и использовать их в качестве
модуля, который можно импортировать в другие программы и сцена-
рии. Для создания модуля нужно поместить соответствующие опера-
торы и определения в файл, имеющий такое же имя, как у модуля.
Примечание. Файл должен иметь расширение .ру.
Например:
# файл : div.py
def divide(a,b):
q = a/b #Если а и b – целые, то q – целое число
г = а – q*b
return (q,r)
Для того чтобы использовать этот модуль в других программах,
можно воспользоваться оператором import:
import div
a, b = div.divide(2305, 29)
Оператор import создает новое пространство имен, которое со-
держит все объекты, определенные в модуле. Для доступа к этому
пространству имен можно просто использовать имя модуля в каче-
стве префикса, как в случае div.divide() из предыдущего примера. Для
выполнения импорта конкретных определений в текущее простран-
ство имен служит оператор from:
from div import divide
a,b = divide(2305,29) # Префикс div больше не нужен
31
Do'stlaringiz bilan baham: |