python - 模块名称中的前导下划线

标签 python module

这段代码:

import matplotlib.pyplot as plt
fig, axes = plt.subplots(12,2, figsize = (12,40), squeeze=False)
print(type(axes[0,0]))

给出以下输出:

<class 'matplotlib.axes._subplots.AxesSubplot'>

为什么模块名称“_subplots”中有一个前导下划线?

这不是以下问题的重复,因为我的问题仅涉及模块命名而不是其他情况。 What is the meaning of a single and a double underscore before an object name?

最佳答案

作为一般规则,如果您遵循 PEP8 标准,则任何名称前面的单个下划线表示该实体并非官方 API,而是在内部使用。但它仍然可见,并且 Python 将其视为任何其他类/变量/模块,因此如果您绝对知道自己在做什么,请随意使用它。

双下划线意味着“隐藏”某些内容(使其以某种方式私有(private))。 Python 对此的处理方式略有不同,并使用名称修饰,因此无法立即访问。 Bar 类中的属性名称 __foobar.__foo 中无法访问,因为 python 会在运行时将其重命名为 bar。 _Bar__foo

编辑

对于模块来说,它具有相同的目的。单个“_”表示模块中的所有类/函数/常量仅供“弱”内部使用。这并不意味着您应该永远使用它们,而是意味着您了解/理解包的内部工作原理。

关于python - 模块名称中的前导下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521915/

相关文章:

python - 多继承python问题

PHP 作为 thttpd 模块与 CGI 在内存使用方面的对比

python - 添加路径后未找到模块错误

javascript - 为什么 Angular 2 是用 CommonJs 模块格式而不是 AMD 编写的?

python - 隐藏包中的实现文件

python - 打印特定字符的所有字符串索引位置

python - 为什么我在使用 Google App Engine 教程时遇到服务器错误?

python - PyInstaller 无法使用 geopandas 和 fiona 创建 exe。即使我在 .spec 文件中进行了一些更改,exe 也无法正常工作

python - Pandas : how to apply functions per subgroups

c - 在Linux中接管以太网数据