此代码:
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?
答案 0 :(得分:1)
作为一般规则,如果您遵循PEP8
标准,则任何名称前面的单个下划线都表示该实体并不表示是官方API,而是在内部使用。尽管它仍然可见,并且Python将其视为其他任何类/变量/模块,所以如果您完全知道自己在做什么,请随时使用它。
双下划线旨在“隐藏”某些内容(使其成为某种方式私有)。 Python将对此有所不同,并使用名称修饰,以便不能立即访问。在__foo
中将无法访问类Bar
中的属性名称bar.__foo
,因为python在运行时会将其重命名为bar._Bar__foo
。
编辑
对于特定模块,它具有相同的用途。单个“ _”表示模块中的所有类/函数/常量仅用于“弱”内部使用。这并不意味着您应该从不使用它们,而是意味着您已经了解/理解了程序包的内部功能。
答案 1 :(得分:0)
这是因为编写matplotlib的人用下划线命名了它。
不仅仅是matplotlib拥有它,这实际上意味着受保护的属性。
答案 2 :(得分:-1)
因为_subplots
是轴的受保护属性。 “ _”表示受保护的属性,“ __”表示专用属性。您可以阅读有关Python中受保护/私有属性的更多信息:https://www.tutorialsteacher.com/python/private-and-protected-access-modifiers-in-python