根据官方文档,PyImport_AppendInittab将在失败时返回-1.但是,它没有说明为什么这个功能会失败.
我想知道它是否只能由于程序员的错误(不正确的参数,没有在正确的时间被调用等)而失败,或者它是否也会由于程序员无法控制的其他因素而失败(像Python没有安装).
我问,因为我想知道我是否应该使用断言或异常处理此问题.另外,如果我应该用异常处理它,有没有办法从Python API中捕获一个错误消息,指出函数调用失败的原因?
根据文档,PyImport_AppendInittab()是一个方便的包装器,PyImport_ExtendInittab()并返回-1"如果表不能扩展".此外,PyImport_ExtendInittab()如果可以分配不足的内存来扩展内部表,则返回-1".这两个函数"应该在之前调用Py_Initialize()".
因此,如果程序内存不足,这些功能应该只会失败.我猜他们也可能在提供无效参数时失败,例如在尝试注册与现有模块同名的内置模块时.后一种情况很容易避免,因为内置模块的名称是众所周知的.
总之,您可以假设返回值-1表示"内存不足",并且这应该永远不会发生,因为该函数仅在进程的早期(之前Py_Initialize())调用,加上模块表所需的内存量是相当小.
如果PyImport_AppendInittab()失败,Python不会提供错误字符串.要抛出一个有意义的异常,您可以在此时报告您知道的信息:未能将模块MODULENAME添加到解释器的内置模块中.
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |