所有,我有这个请求,但首先我将解释我试图实现的目标。我编写了一个python脚本,其中包含许多全局变量,但也包含在不同模块(.py文件(中定义的许多方法。
脚本有时会移动到一个方法,在这个方法中,我调用另一个模块中定义的另一个方法。剧本相当复杂。
我的大部分代码都在Try/Except中,所以每次触发异常时,我的代码都会运行一个名为"check_issue(("的方法,在该方法中,我打印以控制台回溯,然后我问自己是否有任何变量的值需要再次检查。现在,我阅读了许多stackerflow有用的页面,其中用户展示了如何使用/选择globals((、locals((和eval((来查看当前的全局变量和局部变量。
不过,我特别需要的是能够在方法"check_issue(("中输入一个变量的名称,该变量可能不被定义为全局变量,也不在方法check_issure((中。使用类不是一个解决方案,因为我需要更改数百行代码。
这些是我已经阅读的链接:
- 查看所有定义的变量
- 从另一个函数调用一个函数内部定义的变量
- 如何从用户输入中获取输入变量的值
这是一个不起作用的示例代码:
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
有人能建议怎么修吗?非常感谢
当您在check_issue()
内部调用locals()
时,您只能访问此函数的局部变量,即:['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])