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
。