解析Python函数中的外部方法调用?

时间:2011-05-13 02:08:26

标签: python

给出python代码:

import sys
import os 

def MyPythonMethod(value1, value2):
    # defining some variables 
    a = 4
    myValue = 15.65
    listValues = [4, 67, 83, -23]

    # check if a file exists
    if ( os.path.exists('/home/hello/myfile.txt') ):
        pass

    # doing some operation on the list
    listValues[0] = listValues[1]       

    # check if a file exists
    print sys.path

    # looping through the values
    for i in listValues:
        print i 

如何在函数names中提取所有外部方法的MyPythonMethod

理想情况下,我想获取正在调用的所有外部方法/成员的列表。

对于MyPythonMethod,这将返回:

moduleNames = ["os", "sys"]

methodsInvoked = ["os.path.exists", "sys.path"]

(是的,我知道'path'是sys的成员,而不是方法;但我认为你明白了这一点。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你不可能完全知道什么功能(在你的情况下我们谈论的是普通函数,而不是方法,因为方法是类的成员函数),函数将在不解析它​​的情况下调用,因为它可以动态地执行,并且它们的名称可能取决于调用函数时导入到全局命名空间的内容。

但是您可以通过检查MyPythonMethod.func_code.co_names来查看函数引用的模块和函数名称。在您的情况下,此属性将返回元组('os', 'path', 'exists', 'sys')