可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I want to assign :
x0='123' x1='123' x2='123' x3='123' x4='123' x5='123' x6='123' x7='123' x8='123' x9='123'
I write the code to express that i can get the output of a string 123
when input x1
or x8
.
for i in range(0,10): eval("x"+str(i)+"='123'") Traceback (most recent call last): File "", line 2, in File "", line 1 x0='123' ^ SyntaxError: invalid syntax
How i can do that way?
回答1:
For dynamic execution of statements use exec
statement.
>>> exec('y=3') >>> y 3
Eval Usgae:eval(expression)
The expression
argument is parsed and evaluated as a Python expression
eg:
>>> s=3 >>> eval('s==3') True >>> eval('s + 1') 4 >>> eval('s') 3 >>> eval('str(s)+"test"') '3test'
回答2:
eval()
only allows for expressions. Assignment is not an expression but a statement; you'd have to use exec
instead.
Even then you could use the globals()
dictionary to add names to the global namespace and you'd not need to use any arbitrary expression execution.
You really don't want to do this, you need to keep data out of your variable names and use a list or dictionary instead:
x = ['123'] * 10
would give you a list you can address as x[0]
, x[1]
, etc. without having to execute arbitrary expressions.
回答3:
You can you this expression.
eval('"x"+str(i)+"="+"123"')