我正在编写一个简单的Python库,其中我有几个以下划线开头的"私有"函数:
def _a():
pass
def _b():
pass
def public_interface_call():
_a()
_b()
Run Code Online (Sandbox Code Playgroud)
这样我的库用户可以简单地做,from MyLib.Module import *并且他们的命名空间不会与实现细节混杂在一起.
然而,我也在编写单元测试,我很乐意分别测试这些函数,简单地导入我模块中的所有符号都非常方便.目前我在做,from Mylib.Module import _a _b public_interface_call但我想知道是否有更好/更快/更清洁的方式来实现我想要的?
当我写这个问题时,我不确定它是否是停电或者其他什么但今天我意识到(受Underyx的评论启发)我可以简单地这样做:
import MyLib.Module
MyLib.Module._a()
MyLib.Module._b()
Run Code Online (Sandbox Code Playgroud)
或者甚至缩短一点(因为我是一个懒惰的混蛋):
import MyLib.Module as mm
mm._a()
mm._b()
Run Code Online (Sandbox Code Playgroud)