Python 如何从另一个函数创建顶级模块函数?

Python 如何从另一个函数创建顶级模块函数?,python,Python,给定一个带有\uuu init\uuuu.py文件的模块mymodule,如何从该文件中的另一个函数定义mymodule的函数 \uuuuu init\uuuuuuuuuuuupy代码大纲: def a(): THISMODULE.__dict__["b"] = lambda: print("this is not weird") a() b() # Expect "this is not weird" output mym

给定一个带有
\uuu init\uuuu.py
文件的模块
mymodule
,如何从该文件中的另一个函数定义mymodule的函数

\uuuuu init\uuuuuuuuuuuupy
代码大纲:

def a():
    THISMODULE.__dict__["b"] = lambda: print("this is not weird")

a()
b() # Expect "this is not weird" output
mymodule
替代了
anothermodule
,我想让代码更改简单到将
import anothermodule作为thing
替换为
import mymodule作为thing
。由于我还没有实现
anothermodule
的所有功能,我想向用户发送一个关于它的通知,而不是使用“未定义”崩溃。

是导入机制设置的模块属性,其计算结果为当前模块的名称。将其添加到文件的顶部:

import sys

THISMODULE = sys.modules[__name__]

您已经拥有的其他功能应该可以正常工作。

名称必须是动态的吗?如果不仅仅是
global b
b=lambda…
就可以了。什么是上下文-你想在这里实现什么?我不知道前面的名称,必须通过
\uuuu dict\uuuu
访问它们,但是为什么-同样,你能扩展上下文吗?我想模拟另一个模块。模拟每个函数时都要使用swallow all stab和一些更精细的东西。在这种情况下,为什么不从anothermodule import*中执行
,直到覆盖了所有内容?或者,如果这不起作用,请根据例如使用模块级别的
\uuu getattr\uuuu