Я пытаюсь сделать предельно простую передачу строковой переменной в мой оператор eval
. Однако моя строка обрабатывается как неопределенная переменная.
Вот мой код:
condition = 'hi'
print(eval("2 + 4 * len(%s)" % (condition)))
Выход:
Traceback (most recent call last):
File "C:\test.py", line 3, in <module>
print(eval("4 + 3 * len(%s)" % (condition)))
File "<string>", line 1, in <module>
NameError: name 'hi' is not defined
Однако, когда я определяю hi
как переменную, код внезапно компилируется и запускается:
condition = 'hi'
hi = 'hi'
print(eval("2 + 4 * len(%s)" % (condition)))
Выход:
10
Что в мире? Это кажется совершенно не интуитивным для меня. Может ли кто-нибудь помочь мне определить condition
таким образом, чтобы Python не запрашивал также определение 'hi'
?