Lui*_*off 0 python string eval repr
以下是我发现并希望有人解释的一些代码.
如果我将一个字符串赋给变量y,用eval函数计算它并将内容分配给变量y2,解释器返回true.
>>> y = 'a string'
>>> y2 = eval(repr(y))
>>> y == y2
>>> True
Run Code Online (Sandbox Code Playgroud)
以这种方式使用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
Run Code Online (Sandbox Code Playgroud)
不被允许.这是为什么?
str()只返回字符串本身,它不会像它那样在它周围加上引号repr().
y2 = eval(repr(y))
Run Code Online (Sandbox Code Playgroud)
相当于:
y2 = 'a string'
Run Code Online (Sandbox Code Playgroud)
由于repr()添加了引号,这是有效的.
y2 = eval(str(y))
Run Code Online (Sandbox Code Playgroud)
相当于:
y2 = a string
Run Code Online (Sandbox Code Playgroud)
这显然是无稽之谈,因为没有引号.