kir*_*iri 15 python namespaces
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
Run Code Online (Sandbox Code Playgroud)
bru*_*ers 10
在Python中,单个前导下划线表示"这是一个实现细节,而不是API的一部分".
这里的关键是要明确的是,进口模块(argparse在你的例子)使用与进口,但不暴露他们,因为它自己的API的一部分-即你(作为API的客户端)不应该依赖argparse.collections是可用-如果你愿意collections,你必须明确地导入它.
扩展arun的答案......
https://mail.python.org/pipermail/python-dev/2013-July/127286.html中提供的推理是,带有下划线的名称被归类为"内部实现",并且未来不会保证向后兼容性.这意味着你甚至发现自己正在使用thing._otherThing你知道你是在摇摇欲坠的理由,未来的更新.
这意味着这些模块需要明确指出您不应该依赖它们导入的内容,因为这仅仅是一个内部实现细节.
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |