repr():对象的可评估字符串表示形式(可以对其进行“eval()”,这意味着它是一个可评估为 Python 对象的字符串表示形式)
repr()
换句话说:
>>> x = 'foo' >>> repr(x) "'foo'"
问题:
repr(x)
str(x)
'foo'
eval("'foo'")
函数repr()返回一个字符串,如果传递给 ,则会产生相同的对象eval()。这意味着 的输出repr()是一个表示有效 Python 表达式的字符串。对于字符串对象,函数repr()将返回带有附加引号的字符串,以表明它确实是一个字符串。
eval()
例如:
结果"'foo'"包含引号,以表明字符串本身是"foo",从而清楚地表明输出是字符串对象的字符串表示形式。这有助于区分实际的字符串内容和字符串对象的表示形式。
"'foo'"
"foo"
另一方面,该str()函数旨在生成对象的可读、人性化表示。对于字符串,它仅返回字符串本身,不带附加引号:
str()
>>> str(x) 'foo'
x
当您使用 时eval(),它会将传递给它的字符串作为 Python 表达式进行求值。该字符串"'foo'"是一个有效的 Python 表达式,表示内容为 的字符串对象"foo"。因此,当您执行以下操作时:
>>> eval("'foo'") 'foo'
该eval()函数计算字符串"'foo'"(字符串的字符串表示形式)的值"foo",并返回该字符串"foo"。
但是,如果您想要评估返回对象的表达式x,则需要将变量名称x作为字符串传递给eval():
>>> x = 'foo' >>> eval('x') 'foo'
x这将评估当前上下文中保存值的变量名称"foo"。
总结一下: