больше или меньше вывод в интерпретаторе Python - PullRequest
1 голос
/ 04 ноября 2019

Какая лучшая альтернатива увеличению или уменьшению многострочного вывода при запуске python в режиме интерпретатора?

Предположим, существует переменная объекта foo, которая имеет много свойств. A dir(foo) будет выводить на экран. Мы не можем проверять или распечатывать эти выходные данные, поскольку вы сразу получаете приглашение интерпретатора.

В настоящее время единственный способ проверить такие данные - это сохранить их в переменной и просмотреть срезы или ее. Например,

>>> keys = dir(foo)
>>> len(keys)
120
>>> keys[10:20] #viewing the sub slice of keys
...

Надеемся, что есть альтернатива этому. Я знаю, что help() имеет более похожий интерфейс, но только для документирования рассматриваемого объекта.

1 Ответ

3 голосов
/ 04 ноября 2019
Более похожий интерфейс

help обеспечивается модулем pydoc, в частности его недокументированным методом pager. Если вы преобразуете свои данные в строку (возможно, с помощью модуля pprint для дополнительной читаемости), вы можете отправить его на pager, чтобы получить нужную интерактивную визуализацию.

>>> import pydoc
>>> import pprint
>>> def more_vars(obj):
...     pydoc.pager(pprint.pformat(vars(obj)))
...
>>> import math
>>> more_vars(math)
{'__doc__': 'This module provides access to the mathematical functions\n'
            'defined by the C standard.',
 '__loader__': <class '_frozen_importlib.BuiltinImporter'>,
 '__name__': 'math',
 '__package__': '',
 [not pictured: about 30 more lines of methods/attributes]
 'frexp': <built-in function frexp>,
 'fsum': <built-in function fsum>,
 'gamma': <built-in function gamma>,
-- More  --
...