Как я могу присвоить значение переменной с помощью eval в python?



ОК. Поэтому мой вопрос прост: как я могу назначить значение переменной с помощью eval в Python? Я пытался eval('x = 1') но это не сработает. Он возвращает синтаксическую ошибку. Почему это не сработает?

396   3  

3 ответов:

, потому что x=1 - это утверждение, а не выражение. Используйте exec для выполнения инструкций.

>>> exec('x=1')
>>> x
1

кстати, есть много способов избежать использования exec/eval если все, что вам нужно, это динамическое имя для назначения, например, вы можете использовать словарь,setattr функции,или locals() словарь:

>>> locals()['y'] = 1
>>> y
1

обновление: хотя приведенный выше код работает в REPL, это не будет работать внутри функции. Смотрите изменение локальных в Python для некоторых альтернатив, если exec не может быть и речи.

- вы не можете, поскольку присваивание-это оператор, а не выражение, а eval только eval выражения. Используйте exec вместо.

еще лучше, не используйте ни и скажите нам, что вы действительно пытаясь сделать так, чтобы мы могли придумать безопасное и разумное решение.

x = 0
def assignNewValueToX(v):
    global x
    x = v

eval('assignNewValueToX(1)')
print(x)

это работает... причина python будет фактически запускать assignNewValueToX, чтобы иметь возможность оценить выражение. Его можно развивать дальше, но я уверен, что есть лучший вариант для почти любых потребностей, которые могут быть.

Comments

    Ничего не найдено.