python exec 问题:为什么无法连接 'str' 和 'int' 对象
我在 Python 2.6 和 2.7 里测试了这些代码。
看看这个是可以的:
>>> exec 'e=1'
>>> exec 'f=2'
>>> exec 'g=e+f'
>>> print g
3
但是这个会报错:
>>> cont=['e=1','f=2','g=e+f']
>>> for e in cont:
... try:
... exec e
... except Exception,em:
... print em
...
不能将 'str' 和 'int' 对象连接在一起
那这是为什么呢?
谢谢!
2 个回答
2
你在循环中用e
作为变量名。很自然地,它包含的是一个字符串,因为列表里装的就是字符串。换个名字会更好。
6
你选择的变量名不太好。你把 e
既用作 for
循环的变量,又用作 cont[0]
中的整数变量。这样做会导致一些问题。第一次循环时,e
的值是 'e=1';然后调用 exec e
,这时 e
的值变成了 1;接着下一次循环时,e
的值变成了 'f=2',依此类推。等到最后一个表达式 'g=e+f'
被执行时,e
已经不再是一个整数,而是一个字符串——就是字符串 'g=e+f'
。