为什么可以使用带有函数 repr(y) 而不是 str(y) 的 eval()?
Why can you use eval() with the function repr(y) inside and not str(y)?
这是我找到的一些代码,希望有人能解释一下。
如果我将一个字符串分配给变量 y,用 eval 函数对其求值并将内容分配给变量 y2,解释器 returns 为真。
>>> 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
不允许。这是为什么?
str()
只是 returns 字符串本身,它不像 repr()
那样在其周围加上引号。
y2 = eval(repr(y))
相当于:
y2 = 'a string'
因为 repr()
添加了引号,所以这是有效的。
y2 = eval(str(y))
相当于:
y2 = a string
这显然是无稽之谈,因为没有引号。
这是我找到的一些代码,希望有人能解释一下。
如果我将一个字符串分配给变量 y,用 eval 函数对其求值并将内容分配给变量 y2,解释器 returns 为真。
>>> 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
不允许。这是为什么?
str()
只是 returns 字符串本身,它不像 repr()
那样在其周围加上引号。
y2 = eval(repr(y))
相当于:
y2 = 'a string'
因为 repr()
添加了引号,所以这是有效的。
y2 = eval(str(y))
相当于:
y2 = a string
这显然是无稽之谈,因为没有引号。