2015-05-18 35 views
2

我目前工作的一个包装了C-库模块(我们称之为foo模块应该导出一个名为`exit()`的函数吗?

的C-图书馆的职能由foo_前缀,以避免与其他库nameclashes:

int foo_dothis(int x, int y); 
void foo_dothat(struct foo_struct_*s); 

在python中,前缀foo_没什么意义,因为我们有这种类型的命名空间。

import foo 
foo.dothis(42) 

的C-库还具有用于初始化/ deinitializing整个库函数:

int foo_init(void); 
void foo_exit(void); 

现在我想知道是否应剥去对于那些foo_前缀,以及,为了防止与内置exit()困惑:

from foo import * 
exit() 

我想这是确定的,因为

  • 是一致是很重要的
  • exit()更容易记住比foo_exit()
  • foo.exit()是漂亮比foo.foo_exit()
  • 的人一般不提倡使用在生产代码exit()(应该仅在解释使用它)
  • 导入模块中的所有符号无论如何都会产生问题

那么,什么是对的共同做法(最佳实践,...)

回答

0

由于foo_exit()作用是uninitialise库,这是一种foo_init()逆的,你可以简单地使用名称foo.uninit()为Python功能。这将避免名称冲突和混淆内置exit(),其目的应该是明显的模块的用户。

相关问题