Eval无法打印在python中使用exec创建的变量

时间:2019-03-30 12:19:51

标签: python-3.x exec eval

我正在尝试制作一个程序,允许您创建一个然后打印的变量 但是“ eval”功能无法检测到由exec制成的变量

我尝试将变量及其值存储在列表中,但这效率非常低而且很大,所以我试图使用exec和eval重写代码

while True:
    mainInput = input(">>")
    split = mainInput.split()

    def createVar():
                exec(str(split[0])+'='+str(split[1:]))

    def printVar():
                Var = eval(str(split[0]))
                print(Var)

    if len(split) >= 2:
        createVar()
    elif len(split) == 1 (and it is a variable):
        printVar()
    else:
        pass

这是我输入的密码

>>name Johnathan
>>name

我想我会得到:

>>name Johnathan
>>name
Johnathan
>>

但是我得到了:

>>name Johnathan
>>name
Traceback (most recent call last):
  File "path/to/file", line 15, in <module>
    printVar()
  File "path/to/file", line 9, in printVar
    Var = eval(str(split[0]))
  File "<string>", line 1, in <module>
NameError: name 'name' is not defined

我该如何解决这个问题,还有更好的方法吗?还是应该坚持使用我的旧方法? 以及如何检测字符串是否也是变量? 预先感谢!

0 个答案:

没有答案