python中module用法_PyModule的用途和用法

PyModule_New是模块对象的构造函数。它也公开给纯Python代码,作为types.ModuleType类的__new__方法。在

用户代码可能很少需要使用其中任何一个,因为通常通过导入模块来获取模块。但是,Python解释器使用的机制在请求导入时使用PyModule_New来生成模块对象。在/* Get the module object corresponding to a module name.

First check the modules dictionary if there's one there,

if not, create a new one and insert it in the modules dictionary.

Because the former action is most common, THIS DOES NOT RETURN A

'NEW' REFERENCE! */

PyImport_AddModule(const char *name)

{

PyObject *modules = PyImport_GetModuleDict();

PyObject *m;

if ((m = PyDict_GetItemString(modules, name)) != NULL &&

PyModule_Check(m))

return m;

m = PyModule_New(name);

if (m == NULL)

return NULL;

if (PyDict_SetItemString(modules, name, m) != 0) {

Py_DECREF(m);

return NULL;

}

Py_DECREF(m); /* Yes, it still exists, in modules! */

return m;

}

至于如何在新的模块对象中设置值,可以使用常规属性访问。在Python代码(而不是C)中,这很简单:

^{pr2}$

请注意,以这种方式创建的模块不能导入到其他任何地方,除非您做了一些额外的工作。例如,您可以将其添加到modules lookup dictionary,sys.modules:import sys

sys.modules["mymodule"] = mymodule

现在其他模块可以按名称导入mymodule。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值