Python使用输入在另一个函数中选择局部变量

时间:2018-08-06 13:58:52

标签: python global-variables local-variables

所有,我都有这个要求,但首先,我将解释我要实现的目标。我编写了一个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

有人可以建议如何解决它吗? 非常感谢

1 个答案:

答案 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])