所有,我都有这个要求,但首先,我将解释我要实现的目标。我编写了一个python脚本,其中包含许多全局变量,但也包含在不同模块(.py文件)中定义的许多方法。
该脚本有时会移至一个方法,在此方法内,我调用另一个模块中定义的另一个方法。该脚本非常复杂。
我的大多数代码都在Try / Except内部,因此每次触发异常时,我的代码就会运行一个名为“ check_issue()”的方法,在该方法中,我将打印以控制台回溯,然后我问自己是否有任何变量的值要仔细检查。现在,我阅读了许多stackoverflow有用的页面,其中的用户展示了如何使用/选择globals(),locals()和eval()来查看当前的全局变量和局部变量。
我特别需要的是能够在方法“ check_issue()”内输入变量的名称的功能,该变量的名称可能不是全局变量,也不是在方法check_issue()内。 使用类不是解决方案,因为我需要更改数百行代码。
这些是我已经阅读的链接:
这是无效的示例代码:
a = 4
b = "apple"
def func_a():
c = "orange"
...
check_issue()
def check_issue():
print("Something went wrong")
var_to_review = input("Input name of var you want to review")
# I need to be able to enter "c" and print the its value "orange"
print(func_a.locals()[var_to_review ]) # this doesn't work
有人可以建议如何解决它吗? 非常感谢
答案 0 :(得分:1)
在locals()
内部调用check_issue()
时,您只能访问此函数的本地语言,即:['var_to_review']
。
您可以在check_issue函数中添加一个参数,并在每次调用它时传递本地变量。
a = 4
b = "apple"
def func_a():
c = "orange"
check_issue(locals())
def check_issue(local_vars):
print("Something went wrong")
var_to_review = input("Input name of var you want to review")
print(local_vars[var_to_review])