如何获取Python内置模块的列表?
我想要获取一个Python内置模块的名称列表,这样我就可以测试一下函数命名的流行风格,比如下划线命名、驼峰命名或者混合命名。
我知道有一个全局模块索引,但是我在想有没有一个字符串列表,这样使用起来会更方便一些 :)
更新:
len(dir(__builtins__)) = 145
len(stdlib_list("2.7")) = 430
help('modules') = 508 # counting manually the output
9 个回答
16
现在有一个第三方的工具包可以做到这一点。它会从官方Python文档中的标准库页面抓取目录,并生成一个库的列表。
你可以通过pip来安装它。
pip install stdlib_list
这样你就能得到一个库的列表了。
In [12]: from stdlib_list import stdlib_list
In [13]: libraries = stdlib_list("3.5")
In [14]: libraries[4:12]
Out[14]: ['abc', 'aifc', 'argparse', 'array', 'ast', 'asynchat', 'asyncio', 'asyncore']
你可以在这里找到源代码。
23
这样怎么样?不过,这个方法得到的是内置函数和变量的列表,而不是模块...
dir(__builtins__)
help('modules')
这个命令会给你一个所有模块的列表,具体可以参考如何获取本地安装的Python模块列表?。不过,这个列表不是字符串形式的。
62
内置模块的名称可以在 sys.builtin_module_names
里找到。如果你想查看所有可以导入的模块,可以去 pkgutil.iter_modules
。
建议在一个干净的 virtualenv
环境中运行这些命令,这样你能得到(几乎)只有Python自带的模块。
需要注意的是,一个“受欢迎程度调查”可能会包含一些使用旧命名规则的模块,因为这些模块是在现在的标准制定之前写的,并且为了兼容旧版本,它们不能更改。这些模块可能在某些方面有用,但对于回答最佳实践的问题,比如“我应该如何命名我的函数?”就不太合适了。想了解这方面的内容,可以参考 PEP8,Python风格指南,特别是“命名约定”这一部分。