相关疑难解决方法(0)

Python:如何在函数的本地范围内运行eval()

我尝试在函数的局部范围内使用eval()。但是,它始终在全局范围内进行评估。

自包含的示例:

1-此代码有效:

var1 = 1
var2 = 2
var3 = 3    
myDict = dict((name, eval(name)) for name in ["var1",
                                              "var2",
                                              "var3"])
print(myDict["var1"])
Run Code Online (Sandbox Code Playgroud)

2-抛出NameErrorlvar1

def test1():
   lvar1 = 1
   lvar2 = 2
   lvar3 = 3
   myDict = dict((name, eval(name)) for name in ["lvar1",
                                                 "lvar2",
                                                 "lvar3"])
   print(myDict["lvar1"])
Run Code Online (Sandbox Code Playgroud)

3-与2相同的结果。

def test2():
    lvar1 = 1
    lvar2 = 2
    lvar3 = 3
    myDict = dict((name, eval(name), locals()) for name in ["lvar1",
                                                            "lvar2",
                                                            "lvar3"])
    print(myDict["lvar1"])
Run Code Online (Sandbox Code Playgroud)

python scope eval

6
推荐指数
2
解决办法
4210
查看次数

标签 统计

eval ×1

python ×1

scope ×1