以下是我发现并希望有人解释的一些代码。
如果我将一个字符串赋给变量y,用eval函数计算它并将内容分配给变量y2,解释器返回true。
>>> y = 'a string'
>>> y2 = eval(repr(y))
>>> y == y2
>>> True
以这种方式使用str(y):
>>> eval(str(y))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
a string
^
SyntaxError: unexpected EOF while parsing
是不允许的。那是为什么?
答案 0 :(得分:5)
str()
只返回字符串本身,它不会像repr()
那样在它周围加上引号。
y2 = eval(repr(y))
相当于:
y2 = 'a string'
由于repr()
添加了引号,因此这是有效的。
y2 = eval(str(y))
相当于:
y2 = a string
这显然是无稽之谈,因为没有引号。