repr():对象的可评估字符串表示形式(可以“ eval()”它,这意味着它是评估为Python对象的字符串表示形式)
repr():
“ eval()”
换一种说法:
>>> x = 'foo' >>> repr(x) "'foo'"
问题:
repr(x)
str(x)
'foo'
eval("'foo'")
x
>>> x = 'foo' >>> x 'foo'
因此,名称x将附加到'foo'字符串。例如repr(x),当你致电时,解释器放'foo'而不是,x然后致电repr('foo')。
repr('foo')
>>> repr(x) "'foo'" >>> x.__repr__() "'foo'"
repr实际调用一个魔术方法__repr__的x,这给串包含该值的表示'foo'分配给x。因此,它会'foo'在字符串”“中返回结果”'foo'"。的想法repr是给出一个包含一系列符号的字符串,我们可以在解释器中键入该符号并获得与作为参数发送给的相同值repr。
repr
__repr__
'foo'"
>>> eval("'foo'") 'foo'
当我们调用时eval("'foo'"),它与我们'foo'在解释器中键入的相同。就像我们直接”“在解释器中键入外部字符串的内容一样。
>>> eval('foo') Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> eval('foo') File "<string>", line 1, in <module> NameError: name 'foo' is not defined
如果调用eval('foo'),则与foo在解释器中键入的相同。但是没有foo可用的变量,并且引发了异常。
eval('foo')
>>> str(x) 'foo' >>> x.__str__() 'foo' >>>
str只是对象的字符串表示形式(请记住,x变量是指'foo'),因此此函数返回字符串。
>>> str(5) '5'
整数的字符串表示形式5是'5'。
'5'
>>> str('foo') 'foo'
并且字符串的字符串表示形式'foo'是相同的字符串'foo'。