我在调用eval函数的时候出现错误提示。
我写的代码如下:
i=0
j=0
eval("name_"+str(i)+"_"+str(j))=10
我的意思是通过eval函数,生成变量name_0_0,让这个变量取值为10。也就是把一个字符串设定为一个变量的名字,并且给这个变量赋值。
但执行代码时出现错误提示:
i=0
j=0
eval("name_"+str(i)+"_"+str(j))=10
File "<ipython-input-493-9a94cf4491cf>", line 3
eval("name_"+str(i)+"_"+str(j))=10
^
SyntaxError: can't assign to function call
(我记得以前是可以的,但现在不可以,具体也不知道为什么,看了下eval的帮助文件也没有看出什么端倪来,可能是函数功能变了)看来这样做是行不通的,如果想实现我的目的该怎么做呢。我们改成下面的命令就可以了。
i=0
j=0
globals()["name_"+str(i)+"_"+str(j)]=10 #这样就没有错误提示了
到此就完美解决了
经验总结:eval不能用在赋值符号'=’的左边。如果用在左边就会有错误提示SyntaxError: can't assign to function call