这段代码:
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
类中的属性名称 __foo
在 bar.__foo
中无法访问,因为 python 会在运行时将其重命名为 bar。 _Bar__foo
。
编辑
对于模块来说,它具有相同的目的。单个“_”表示模块中的所有类/函数/常量仅供“弱”内部使用。这并不意味着您应该永远使用它们,而是意味着您了解/理解包的内部工作原理。
关于python - 模块名称中的前导下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521915/