是否有必要先设置__all__然后使用下划线呢?

tem*_*ame 4 python cpython

我一直在阅读cpython HTTP包的源代码,以获取乐趣和收益,并注意到在server.py中,他们__all__设置了变量,但对函数也使用了下划线_quote_html(html)

这不是多余的吗?两者都不能限制进口的商品from HTTP import *吗?

他们为什么两者都做?

小智 5

__all__确实是做事的极限from HTTP import *; 在_函数或方法的名称前面加上前缀是一种惯例,用于通知用户该项目应视为私有的,因此,使用此方法时,后果自负。


jon*_*rpe 5

除了使用 的“按惯例私有”功能外_leading_underscores,还有:

  • 相当多的import编辑名称;
  • 四个类名;
  • 三个不带下划线的函数名;
  • 两个字符串“常量”;和
  • 1 个局部变量 ( nobody)。

如果__all__未定义为仅涵盖类,则所有这些也将通过通配符添加到您的命名空间中from server import *

是的,您可以只使用一种方法或另一种方法,但我认为前导下划线比排除__all__; 后者说“你可能不会经常需要这个”,前者说“除非你知道自己在做什么,否则不要出去”。他们都有自己的位置。