我动态地定义模块中的函数,然后更新模块的__all__
和函数的__name__
属性,以匹配模块中的名称。我想知道更新函数的__module__
属性以及指向函数将驻留的模块是否是一个好主意。医生说:__module__
在其中定义函数的模块的名称,如果不可用,则为“无”。
创建函数的代码位于另一个模块中,该模块与函数所在的模块几乎没有关系。此模块中没有对函数的引用。
我在邮件列表上做了一些搜索,但是我对__module__
的语义有点困惑,如果我应该将其设置为none,或者函数所在的模块,或者创建函数的代码所在的模块。暂时不谈了,但我有兴趣看看是否有人知道答案。
最佳答案
我不会这么做的。将函数从一个模块导入到另一个模块是常见的情况。__module__
属性用于检索定义函数的模块,或者读取源代码,或者有时在脚本中重新导入。无论定义是通过静态代码还是动态代码,我都看不出有什么不同:如果有人想要读取函数的源代码,他们应该查看动态创建它的模块。
你可以看看PEP 3130。尽管它被拒绝了,但它可能比在其他地方发现的单句描述更能让您深入了解__module__
的目的。
关于python - __module__的语义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10113892/