如何使用 python 中的检查模块提取函数中定义的变量的值
how to extract value of a variable defined in a function using inspect module in python
我正在尝试访问在 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']
你不在那种情况下。
局部变量仅在函数执行期间存在,即函数被调用和返回之间。您唯一的可能性是在函数调用的函数中执行此操作(或者如果它是迭代期间的生成器)。
无论如何,如果你这样做,函数返回后它仍然是无效的。
感谢大家的意见和建议。 @Thomas Wagenaar.@skyking.
这就是我最终做的事情,我在函数中定义了这样的变量:-
def testMethod(self):
self.myvar = {'a':1,'b':2}
然后使用检查模块和 getattr(),我可以实例化 class,调用此 testMethod(因异常而失败),但到达初始化变量的位置,然后只读取多变的。我不知道解决方案是否是 "correct" 在 python 中做事的方式,但这个小技巧对我有用。
我正在尝试访问在 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']
你不在那种情况下。
局部变量仅在函数执行期间存在,即函数被调用和返回之间。您唯一的可能性是在函数调用的函数中执行此操作(或者如果它是迭代期间的生成器)。
无论如何,如果你这样做,函数返回后它仍然是无效的。
感谢大家的意见和建议。 @Thomas Wagenaar.@skyking.
这就是我最终做的事情,我在函数中定义了这样的变量:-
def testMethod(self):
self.myvar = {'a':1,'b':2}
然后使用检查模块和 getattr(),我可以实例化 class,调用此 testMethod(因异常而失败),但到达初始化变量的位置,然后只读取多变的。我不知道解决方案是否是 "correct" 在 python 中做事的方式,但这个小技巧对我有用。