python __module__ dunder是__main __

时间:2020-09-23 23:16:19

标签: python python-3.x python-module

似乎当我运行python程序时,函数的__module__ dunder将返回该函数模块的完全限定路径。它可以工作,但是有1个例外-当该函数与我的main位于同一文件中时。在这种情况下,__module__提示会返回__main__

说我的目录结构看起来像

| -- lib
|    |  util
|    |-- fileutil.py
|    |-- processutil.py

假设foo中有一个函数fileutil.py。如果我不在fileutil.py以外的地方,并且可以

fileutil.foo.__module__

我会得到lib.util.fileutil。 但是,如果我从fileutil.py本身发出呼叫,我会得到__main__

我想始终获得完全限定的路径,所以lib.util.fileutil不管我的主要职能在哪里。有办法吗?

编辑- 我这样做的原因是,我需要在单独的数据结构中记录函数调用的记录。 例如,我想知道

今天这一天,我想使用这些参数运行lib.utils.foo

如果说lib.utils.foo代替__main__.foo,则该记录的用处将大大减少。

请注意,有时我会执行惰性评估,因此我并不总是实际运行该函数。这就是为什么我实际上不能进行函数调用和检查调用堆栈的原因。

0 个答案:

没有答案