确定从哪个文件中定义了一个函数在 python 中

00_*_*_00 7 python function introspection

我正在以编程方式打印出 python 中的函数列表。我可以从名字中得到名字

for ifunc,func in enumerate(list_of_functions):
    print(str(ifunc)+func.__name__)
Run Code Online (Sandbox Code Playgroud)

如何获取定义函数的源文件名?

如果函数是对象的属性,如何获取父对象的类型?


可移植性python2/3是必须的

Sma*_*noj 11

func.__module__
Run Code Online (Sandbox Code Playgroud)

将在定义的女巫中返回模块

func.__globals__['__file__']
Run Code Online (Sandbox Code Playgroud)

将返回定义它的文件的整个路径。仅适用于用户定义的函数


Job*_*Job 8

如何获取定义函数的源文件名...?

import inspect
inspect.getfile(func)
Run Code Online (Sandbox Code Playgroud)

如果函数是对象的属性,如何获取父对象的类型?

要获取方法的类(即当该函数是对象的属性时):

if inspect.ismethod(func):
    the_class = func.__self__.__class__
Run Code Online (Sandbox Code Playgroud)

参考: https: //docs.python.org/3/library/inspect.html