似乎当我运行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
,则该记录的用处将大大减少。
请注意,有时我会执行惰性评估,因此我并不总是实际运行该函数。这就是为什么我实际上不能进行函数调用和检查调用堆栈的原因。