Python 模块是否应该导出名为“exit()”的函数?
我目前正在开发一个包装C库的模块(我们称之为Python 模块是否应该导出名为“exit()”的函数?,python,module,naming-conventions,Python,Module,Naming Conventions,我目前正在开发一个包装C库的模块(我们称之为foo) C库的函数前缀为foo\uz,以避免与其他库的名称冲突: int foo_dothis(int x, int y); void foo_dothat(struct foo_struct_*s); 在python中,前缀foo_u没有什么意义,因为我们有用于这类事情的名称空间 import foo foo.dothis(42) C库还具有初始化/取消初始化整个库的功能: int foo_init(void); void foo_exit(v
foo
)
C库的函数前缀为foo\uz
,以避免与其他库的名称冲突:
int foo_dothis(int x, int y);
void foo_dothat(struct foo_struct_*s);
在python中,前缀foo_u
没有什么意义,因为我们有用于这类事情的名称空间
import foo
foo.dothis(42)
C库还具有初始化/取消初始化整个库的功能:
int foo_init(void);
void foo_exit(void);
现在,我想知道是否也应该去掉foo\uu
前缀,以避免与内置的exit()
混淆:
我想这没关系,因为
- 保持一致性很重要
比exit()
foo\u exit()
比foo.exit()
foo.foo\u exit()漂亮
- 通常不鼓励人们在生产代码中使用
(并且只能在解释器中使用)exit()
- 无论如何,从模块导入所有符号都会带来麻烦
既然
foo\u exit()
的作用是取消对库的初始化,而这与foo\u init()
相反,您可以简单地使用namefoo.uninit()
作为Python函数。这将避免与内置的exit()
名称冲突和混淆,其目的应该对模块的用户显而易见
from foo import *
exit()