我试图访问在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中是否"正确",但是这个小技巧对我来说很有效。