了解Python中的repr()函数
repr():
对象的可评估字符串表示形式(可以“ eval()”
它,这意味着它是评估为Python对象的字符串表示形式)
换一种说法:
>>> 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(x)"'foo'"
>>> x.__repr__()
"'foo'"
repr
实际调用一个魔术方法__repr__
的x
,这给串包含该值的表示'foo'
分配给x
。因此,它会'foo'
在字符串”“中返回结果”'foo'"
。的想法repr
是给出一个包含一系列符号的字符串,我们可以在解释器中键入该符号并获得与作为参数发送给的相同值repr。
>>> 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可用的变量,并且引发了异常。
>>> str(x)'foo'
>>> x.__str__()
'foo'
>>>
str只是对象的字符串表示形式(请记住,x
变量是指'foo'
),因此此函数返回字符串。
>>> str(5)'5'
整数的字符串表示形式5是'5'
。
>>> str('foo')'foo'
并且字符串的字符串表示形式'foo'
是相同的字符串'foo'
。
以上是 了解Python中的repr()函数 的全部内容, 来源链接: utcz.com/qa/409006.html