Как я могу запустить eval() в локальной области функции?Python

Программы на Python
Ответить
Anonymous
 Как я могу запустить eval() в локальной области функции?

Сообщение Anonymous »

Я пытаюсь использовать eval() в локальной области действия функции. Однако он всегда оценивается в глобальной области.

Отдельные примеры:

1. Этот код работает:< /p>

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


2 — выдает NameError для lvar1

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


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"])


Подробнее здесь: https://stackoverflow.com/questions/366 ... a-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»