如何在python中使用inspect模块提取函数中定义的变量的值



我试图访问在python模块中的函数中定义的特定变量。我能够获得变量名(使用inspect.getmembers())函数,我能够提取(co_varnames)属性中感兴趣的函数中定义的所有变量。我如何得到分配给变量的值?下面是示例代码:-

    File 1:- input.py
    class foo(self):
        def some_fun():
            some_var='abc'
    File 2:- sample.py
    imported_module = importlib.import_module(input) 
    all_varnames = inspect.getmembers(imported_module)
    -->> need value of all_varnames['some_var']    

在这种情况下你不需要。

局部变量只在函数执行期间出现,也就是在函数被调用和返回之间。您唯一的可能性是在函数调用的函数中执行此操作(或者如果它是迭代期间的生成器)。

无论如何,如果这样做,在函数返回后,它仍然是无效的。

感谢大家的评论和建议。瓦格纳博士.@skyking @Thomas .

这就是我最终所做的,我在函数中定义了这样的变量:-

def testMethod(self):
    self.myvar = {'a':1,'b':2}

然后使用inspect模块和getattr(),我可以实例化类,调用这个testMethod(异常失败),但到了一个点,变量被初始化,然后只是读取变量。我不知道这个解决方案在python中是否"正确",但是这个小技巧对我来说很有效。

最新更新