了解Python中的repr()函数

发布于 2021-02-02 23:19:42

repr():对象的可评估字符串表示形式(可以“ eval()”它,这意味着它是评估为Python对象的字符串表示形式)

换一种说法:

>>> x = 'foo'
>>> repr(x)
"'foo'"

问题:

  1. 为什么我得到双引号repr(x)?(这样做的时候我不懂str(x)
  2. 为什么我得到'foo'时却得到eval("'foo'")而不是x是对象?
关注者
0
被浏览
93
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。
    >>> 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'



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看