Выбрать главу

Функция dir просто возвращает список строк с именами всех атрибутов для любого объекта, имеющего атрибуты; это удобная подсказка по содержимому модуля при работе в интерактивном режиме. Мы можем понять, например, что существует нечто с именем sys.version, поскольку имя version присутствует в списке, возвращаемом функцией dir. Если этого недостаточно, всегда можно обратиться к строке __doc__ встроенного модуля:

>>> sys.__doc__

"This module provides access to some objects used or maintained by the\ ninterpreter and to functions that interact strongly with the interpreter.\n\ nDynamic objects:\n\nargv -- command line arguments; argv[0] is the script pathname if known \npath -- module search path; path[0] is the script directory, else ‘’\nmodules -- dictionary of loaded modules\n\ndisplayhook -- called to show results in an i ...далее следует еще много текста...

Постраничный вывод строк документации

Встроенный атрибут __doc__ обычно содержит строку документации, которая может выглядеть несколько странно при отображении в таком виде, - это одна длинная строка с символами перевода строки, выводящимися как \n, а не красивый список строк. Чтобы отформатировать эти строки и придать им более удобочитаемый вид, можно воспользоваться функцией print:

>>> print(sys.__doc__)

This module provides access to some objects used or maintained by the interpreter and to functions that interact strongly with the interpreter.

Dynamic objects:

argv -- command line arguments; argv[0] is the script pathname if known path -- module search path; path[0] is the script directory, else ‘’ modules -- dictionary of loaded modules

...далее следует еще много текста...

Встроенная функция print, в отличие от механизма вывода в интерактивной оболочке, корректно интерпретирует символы перевода строки. К сожалению, функция print не реализует возможность прокрутки или постраничного просмотра и поэтому может быть неудобной на некоторых платформах. Большего успеха можно добиться с помощью других инструментов, таких как встроенная функция help:

>>> help(sys)

Help on built-in module sys:

NAME

sys

FILE

(built-in)

MODULE DOCS

http://docs.python.org/library/sys

DESCRIPTION

This module provides access to some objects used or maintained by the interpreter and to functions that interact strongly with the interpreter.

Dynamic objects:

argv -- command line arguments; argv[0] is the script pathname if known path -- module search path; path[0] is the script directory, else ‘’ modules -- dictionary of loaded modules

...далее следует еще много текста...

Функция help - это один из интерфейсов, предоставляемых системой PyDoc. Она входит в состав стандартной библиотеки, распространяемой вместе с Python, и предназначена для отображения в форматированном виде документации (строк документации, а также дополнительной структурной информации), связанной с объектом. Документация может быть в формате страниц справочного руководства Unix, который используется для вывода с помощью функции help, или в виде HTML-страницы, что еще лучше. Это очень удобный способ получения начальной информации при работе в интерактивном режиме, и это последний шанс разобраться, прежде чем погрузиться в справочники и книги.

Сценарий постраничного вывода

Функция help, с которой мы только что познакомились, также не обладает достаточной гибкостью при отображении информации. Хотя она и пытается в некоторых ситуациях обеспечить постраничный вывод, тем не менее на некоторых компьютерах - из тех, на которых мне приходилось работать, - она неточно выбирает размер страницы. Кроме того, она вообще не обеспечивает постраничный просмотр в графическом интерфейсе IDLE; вместо этого предлагается использовать полосу прокрутки, что весьма неудобно на больших мониторах. Когда мне требуется получить более полный контроль над тем, как функция help будет выводить текст, я обычно использую свой собственный вспомогательный сценарий, представленный в примере 2.1.

Пример 2.1. PP4E\System\more.py

разбивает строку или текстовый файл на страницы для интерактивного просмотра def more(text, numlines=15):

lines = text.splitlines()    # подобно split(‘\n’) но без ‘’ в конце

while lines:

chunk = lines[:numlines] lines = lines[numlines:] for line in chunk: print(line)

if lines and input(‘More?’) not in [‘y’, ‘Y’]: break if __name__ == ‘__main__’:

import sys    # если запускается как сценарий

more(open(sys.argv[1]).read(), 10) # отобразить постранично содержимое

# файла, указанного в командной строке

Главной в этом файле является функция more, и если вы обладаете достаточными знаниями языка Python, чтобы читать эту книгу, вы без труда поймете ее. Она просто разбивает строку по символам перевода строки, а затем извлекается срез и выводится сразу несколько строк (по умолчанию 15), чтобы избежать прокрутки экрана. Выражение извлечения среза lines[:15] вернет первые 15 элементов списка, a выражение lines[15:] - последние. Чтобы изменить размер страницы, передайте требуемое число строк в аргументе numlines (например, в последней строке примера 2.1 в аргументе numlines функции more передается число 10).