【问题标题】:determine from which file a function is defined in python确定在 python 中从哪个文件中定义函数
【发布时间】:2018-11-10 05:09:16
【问题描述】:

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

中获取名称
for ifunc,func in enumerate(list_of_functions):
    print(str(ifunc)+func.__name__)

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

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


可移植性 python2/3 是必须的

【问题讨论】:

  • 标题说“从哪个文件调用函数”,其实你是问函数是在哪个文件中定义的,也就是不同...
  • 将编辑。你是对的

标签: python function introspection


【解决方案1】:

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

import inspect
inspect.getfile(func)

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

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

if inspect.ismethod(func):
    the_class = func.__self__.__class__

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

【讨论】:

    【解决方案2】:
    func.__module__
    

    将返回已定义的模块

    func.__globals__['__file__']
    

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

    【讨论】:

      【解决方案3】:

      您可以使用__file__ 变量。

      print(__file__)

      【讨论】:

        【解决方案4】:

        如此处所述https://docs.python.org/3/library/inspect.html func.__globals__ 返回定义函数的全局命名空间。

        【讨论】:

          【解决方案5】:

          要获取文件名,只需使用 -

          print(os.path.basename(__file__))
          

          如果你想要完整的文件路径,你可以使用

          print __file__
          

          【讨论】:

          • 不完全。这会给我当前脚本的文件名。我正在编辑以澄清
          猜你喜欢
          • 1970-01-01
          • 2019-07-09
          • 2022-01-20
          • 1970-01-01
          • 1970-01-01
          • 2010-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多