我正在尝试制作一个程序,允许您创建一个然后打印的变量 但是“ 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
我该如何解决这个问题,还有更好的方法吗?还是应该坚持使用我的旧方法? 以及如何检测字符串是否也是变量? 预先感谢!