Eval не может печатать переменные, созданные с использованием exec в python - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь создать программу, которая позволяет вам создавать переменные для печати, но функция '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

Как я могу это исправить, и есть ли лучший способ, или я должен придерживаться моего старого метода?И как я могу определить, является ли строка также переменной?Заранее спасибо!

...