我目前正在开发一个包装C库的模块(让我们称之为foo
)
C库的功能前缀为foo_
,以避免与其他库发生名称冲突:
int foo_dothis(int x, int y);
void foo_dothat(struct foo_struct_*s);
在python中,foo_
前缀毫无意义,因为我们为这类事物设置了名称空间。
import foo
foo.dothis(42)
C库还具有初始化/取消初始化整个库的功能:
int foo_init(void);
void foo_exit(void);
现在我想知道我是否应该删除那些foo_
前缀,以防止与内置exit()
混淆:
from foo import *
exit()
我想这没关系,因为
exit()
比foo_exit()
foo.exit()
比foo.foo_exit()
exit()
(并且只应在翻译中使用它)那么通常的方法是什么(最佳实践,......)
答案 0 :(得分:0)
由于foo_exit()
的作用是取消初始化库,这是foo_init()
的反转,因此您可以简单地将名称foo.uninit()
用于Python函数。这样可以避免名称冲突和内置exit()
的混淆,其目的对于模块的用户来说应该是显而易见的。