Для динамического выполнения операторов используется инструкция exec
.
>>> exec('y=3')
>>> y
3
Использование Eval: eval(expression)
Аргумент expression
передается и оценивается как выражение Python
, например:
>>> s=3
>>> eval('s==3')
True
>>> eval('s + 1')
4
>>> eval('s')
3
>>> eval('str(s)+"test"')
'3test'
Вы можете это выражение.
eval('"x"+str(i)+"="+"123"')
eval()
допускает только выражения . Назначение - это не выражение, а заявление; вам нужно будет использовать exec
.
Даже тогда вы могли бы использовать словарь globals()
для добавления имен в глобальное пространство имен, и вам не нужно было бы использовать произвольное выполнение выражения.
Вы действительно не хотите этого делать, вам нужно сохранить данные из ваших имен переменных и вместо этого использовать список или словарь:
x = ['123'] * 10
предоставит вам список, который вы можете указать как x[0]
, x[1]
и т. д. без необходимости выполнять произвольные выражения.