我注意到它与functools.partial以及python源代码本身一起工作。例如。低于collections.py
from operator import itemgetter as _itemgetter, eq as _eq
from keyword import iskeyword as _iskeyword
import sys as _sys
import heapq as _heapq
这样做的理由是什么?如果这是C ++,我理解它可能导致命名空间冲突,但是在python中这些名称不会是导入它们的模块的本地名称吗?除非有人确实导入*,但这是不鼓励的,所以我不确定这是什么原因。
答案 0 :(得分:1)
这表示函数,变量或类是私有的。 它不仅是一个人类约定(所以你应该知道不要使用它),但python还强制它不会在某些条件下导入。
来自PEP8:
_single_leading_underscore:弱“内部使用”指标。例如。来自M import *不会导入名称以下划线开头的对象。
PS:使用import *
并不是一种好习惯,但这是另一种讨论。