在 Python 标准库中有几种情况,其中导入的模块名称中带有前导下划线 (_
)。我想知道为什么这是必要的,因为它无论如何都在模块的名称下,from ... import *
将尊重 __all__
变量来导入什么。
有谁知道为什么使用/需要这个?
一个示例是 argparse
,它具有以下导入:
import collections as _collections
import copy as _copy
import os as _os
import re as _re
import sys as _sys
import textwrap as _textwrap
最佳答案
在 Python 中,单个前导下划线表示“这是一个实现细节,而不是 API 的一部分”。
这里的重点是明确导入模块(argparse
在您的示例中)使用导入的模块但不公开它们作为它自己的 API 的一部分 - 即,您(作为 API 的客户端)不应该依赖 argparse.collections
可用 - 如果您想要 collections
,您必须明确导入它。
关于python - 为什么模块在另一个模块中作为 _<name> 导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20757763/