可以将Python中的dir()输出为垂直列表吗?

5 投票
4 回答
3602 浏览
提问于 2025-04-18 08:11

我在用Python的 dir(variable) 命令来获取 variable 的所有属性和方法。

输出的结果大概是这样的: ['属性', '属性', '方法', '属性', '方法', 等等];也就是说,输出是横着的,所以看起来有点难。

有没有办法让 dir() 输出成竖着的一列,像这样:

'attribute', 
'attribute', 
'method', 
'attribute', 
'method', 
etc.

4 个回答

0

这不是简单的一行打印,而是 pdir-athesto 这个包的输出效果非常好。它采用了列式展示,并且用颜色来区分不同的方法类型(比如公共的、私有的等等)。

comparation dir vs pdir-athesto

如何安装

$ pip3 install pdir-athesto

如何使用

>>> from pdir import pdir
>>> pdir(list)

另外,你可以通过设置 PYTHONSTARTUP 变量来自动导入这个包。具体可以查看 README 文件中的 自动导入 部分,链接在这里: https://pypi.org/project/pdir-athesto/

1

使用 dir(requests) 可以得到一个名字的列表,你可以用这个列表进行循环,然后把每个名字打印出来。通过 .join() 方法,你可以把列表里的所有元素合成一个字符串,并且在每个元素后面加上换行符,这样就能把它们“竖着”打印出来。

这个例子使用的是 Python 3.8:

print("\n".join(dir(requests)))

结果:

ConnectTimeout
ConnectionError
DependencyWarning
FileModeWarning
HTTPError
NullHandler
PreparedRequest
ReadTimeout
Request
RequestException
RequestsDependencyWarning
Response
Session
Timeout
TooManyRedirects
URLRequired
__author__
__author_email__
__build__
__builtins__
__cached__
__cake__
__copyright__
__description__
__doc__
__file__
__license__
__loader__
__name__
__package__
__path__
__spec__
__title__
__url__
__version__
_check_cryptography
_internal_utils
adapters
api
auth
certs
chardet
check_compatibility
codes
compat
cookies
delete
exceptions
get
head
hooks
logging
models
options
packages
patch
post
put
request
session
sessions
status_codes
structures
urllib3
utils
warnings

有一点需要注意,虽然和提问者的问题不完全相关,但可能值得记住(Python 文档):

注意:因为 dir() 主要是为了方便在交互式提示符下使用,所以它提供的名字集合更有趣,而不是严格或一致定义的名字集合,并且它的具体行为可能会在不同版本中有所变化。例如,当参数是一个类时,元类属性不会出现在结果列表中。

3

你可以用 print 函数配合 * 操作符和 sep 参数,把每个项目拆开,然后用换行符分开。就像这样:

print(*dir(list), sep='\n'))

解释一下:* 操作符可以把一个可迭代的对象(比如列表)里的每个元素都打印出来,而 sepprint 函数的一个参数,它可以让你用指定的分隔符来分开这些项目,在这里就是换行符 \n

12

这其实就是一个列表,所以你也可以对它进行循环操作:

for entry in dir(obj):
    print repr(entry)

或者你可以使用 pprint.pprint() 这个方法,让列表的显示变得更美观。

下面是 pprint 模块本身的演示:

>>> import pprint
>>> pprint.pprint(dir(pprint))
['PrettyPrinter',
 '_StringIO',
 '__all__',
 '__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 '_commajoin',
 '_id',
 '_len',
 '_perfcheck',
 '_recursion',
 '_safe_repr',
 '_sorted',
 '_sys',
 '_type',
 'isreadable',
 'isrecursive',
 'pformat',
 'pprint',
 'saferepr',
 'warnings']

撰写回答