Python:如何获取调用函数的文件的绝对路径?

Python:如何获取调用函数的文件的绝对路径?,python,python-3.x,namespaces,python-import,Python,Python 3.x,Namespaces,Python Import,在Python中,可以使用双下划线变量\uuuuu file\uuuu获取使用该变量的脚本的文件路径。是否有方法获取调用函数的脚本的文件路径 我能做到这一点的唯一方法是将\uuuu文件\uuuu传递给函数。我不想每次使用该函数时都这样做。我可以使用不同的双下划线变量吗?或者是否有方法检查命名空间中调用函数的绝对路径 这就是我所拥有的: definition.py的内容 my_script.py的内容 正在运行my_script.py 这就是我想要的: definition.py的内容 my_sc

在Python中,可以使用双下划线变量
\uuuuu file\uuuu
获取使用该变量的脚本的文件路径。是否有方法获取调用函数的脚本的文件路径

我能做到这一点的唯一方法是将
\uuuu文件\uuuu
传递给函数。我不想每次使用该函数时都这样做。我可以使用不同的双下划线变量吗?或者是否有方法检查命名空间中调用函数的绝对路径

这就是我所拥有的: definition.py的内容 my_script.py的内容 正在运行my_script.py 这就是我想要的: definition.py的内容 my_script.py的内容 正在运行my_script.py
您可以使用模块
回溯
访问调用堆栈。调用堆栈的最后一个元素是最近调用的函数。最后的第二个元素是最近调用的函数的调用方

foo.py:

import traceback
def foo(): 
    stack = traceback.extract_stack()
    print(stack[-2].filename)
import foo
foo.foo()
import bar
# /path/to/bar.py
bar.py:

import traceback
def foo(): 
    stack = traceback.extract_stack()
    print(stack[-2].filename)
import foo
foo.foo()
import bar
# /path/to/bar.py
提示:

import traceback
def foo(): 
    stack = traceback.extract_stack()
    print(stack[-2].filename)
import foo
foo.foo()
import bar
# /path/to/bar.py