为什么这个Python ascii字符串不等同于常规字符串?

为什么这个Python ascii字符串不等同于常规字符串?,python,python-3.x,comparison,ascii,Python,Python 3.x,Comparison,Ascii,为什么以下失败 assert ascii("cat") == "cat" => False (我想这与Python对字符串的比较/ASCII函数完成后对字符串的编码有关。)这是因为ASCII的输出是这样的: >>> ascii('cat') "'cat'" 这显然不同于仅仅是'cat' ascii返回字符串对象的repr版本,可与eval或ast.literal\u eval一起使用以重新生成字符串对象 >>> eval (ascii('cat'))

为什么以下失败

assert ascii("cat") == "cat" => False

(我想这与Python对字符串的比较/ASCII函数完成后对字符串的编码有关。)

这是因为
ASCII
的输出是这样的:

>>> ascii('cat')
"'cat'"
这显然不同于仅仅是
'cat'

ascii
返回字符串对象的
repr
版本,可与
eval
ast.literal\u eval
一起使用以重新生成字符串对象

>>> eval (ascii('cat'))
'cat'
>>> from ast import literal_eval
>>> literal_eval(ascii('cat'))
'cat'
从:

str()
函数用于返回 是相当可读的,而
repr()
是用来生成 口译员可以阅读的表述(或将强制
SyntaxError
如果没有等效语法)。对于没有 对于人类消费有一个特定的表示,
str()
will 返回与
repr()
相同的值。许多值,例如数字或 列表和字典等结构具有相同的表示形式 使用任一函数字符串和浮点数,以 特别是,有两种不同的表示法


再次感谢,太快了!