проблема с python exec: почему нельзя объединить объекты 'str' и 'int' - PullRequest
0 голосов
/ 12 мая 2011

Я тестировал их в Python 2.6 и 2.7.
See this is OK:
>>> exec 'e = 1'
>>> exec 'f = 2'
>>> exec 'g = e + f '
>>> печать g
3

But this returns error:
>>> cont = [' e = 1 ', 'f = 2', 'g = e + f']
>>> для e в продолжение:
... try:
... exec e
... кроме Exception, em:
... print em
...
не может объединить объекты 'str' и 'int'

Так почему?Спасибо!

Ответы [ 2 ]

5 голосов
/ 12 мая 2011

Вы неправильно выбрали имена переменных.Вы используете e как переменную цикла for и переменную int в cont[0].Что происходит, так это то, что в первый раз через цикл, e == 'e=1';тогда вызывается exec e и e == 1;затем в следующий раз через цикл e == 'f=2' и так далее.К тому времени, когда последнее выражение 'g=e+f' равно exec ed, e уже не является целым числом, а строкой - строкой 'g=e+f'.

2 голосов
/ 12 мая 2011

Вы используете e в качестве переменной для вашего цикла.Естественно, он содержит строку, поскольку это то, что содержится в списке.Вместо этого используйте другое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...