0

这是我找到的一些代码,希望有人解释。

如果我将一个字符串分配给变量 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

不被允许。这是为什么?

4

1 回答 1

5

str()只是返回字符串本身,它不会像repr()这样在它周围加上引号。

y2 = eval(repr(y))

相当于:

y2 = 'a string'

由于repr()添加了引号,因此这是有效的。

y2 = eval(str(y))

相当于:

y2 = a string

这显然是无稽之谈,因为没有引号。

于 2015-05-19T01:35:48.830 回答