python exec 问题:为什么无法连接 'str' 和 'int' 对象

1 投票
2 回答
905 浏览
提问于 2025-04-16 17:29

我在 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'

撰写回答