• Python中str()和repr()函数的区别


    在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str() 或者 repr() 。

    区别与使用
    函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常), 适合开发和调试阶段使用。

    >>> number = 123456789
    >>> type(str(number))
    <class 'str'>
    >>> type(repr(number))
    <class 'str'>
    >>> print(repr(number))
    123456789
    >>> print(str(number))
    123456789
    

    两个函数返回的类型是相同的,值也是相同的。

    >>> print(str('123456789'))
    123456789
    >>> print(repr('123456789'))
    '123456789'
    

    但当我们把一个字符串传给 str() 函数再打印到终端的时候,输出的字符不带引号。而将一个字符串传给 repr() 函数再打印到终端的时候,输出的字符带有引号。

    造成这两种输出形式不同的原因在于:

    print 语句结合 str() 函数实际上是调用了对象的 __str__ 方法来输出结果。而 print 结合 repr() 实际上是调用对象的 __repr__ 方法输出结果。下例中我们用 str 对象直接调用这两个方法,输出结果的形式与前一个例子保持一致。

    >>> print('123456789'.__repr__())
    '123456789'
    >>> print('123456789'.__str__())
    123456789
    

    不同数据类型的不同处理
    某对象没有适于人阅读的解释形式的话, str() 会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的处理方式。

    代码实例:

    >>> listA = [1,2,3]
    >>> str(listA)
    '[1, 2, 3]'
    >>> repr(listA)
    '[1, 2, 3]'
    >>>
    

    结果是相同的。
    而字符串和浮点数,它们的处理方式不同。
    注意:Python3和Python2版本str函数处理浮点数时是不同的,Python3版本下,str和repr会返回相同的结果,Python2下则不会, 具体看下面的例子:

    Python3版本:

    >>> string = 'Hello, PythonTab.com'
    >>> str(string)
    'Hello, PythonTab.com'
    >>> repr(string)
    "'Hello, PythonTab.com'"
    >>> str(1.0/7.0)
    '0.14285714285714285'
    >>> repr(1.0/7.0)
    '0.14285714285714285'
    

    Python2版本:

    >>> str(1.0/7.0)
    '0.142857142857'
    >>> repr(1.0/7.0)
    '0.14285714285714285'
    

      

  • 相关阅读:
    BZOJ 1088 模拟(扫雷经验…)
    BZOJ 1529
    BZOJ 3224
    BZOJ 1192
    BZOJ 1012
    博客搬家说明
    BZOJ 2423 DP
    BZOJ 1789&1830 推式子 乱搞
    BZOJ 1588
    拆点:虫洞
  • 原文地址:https://www.cnblogs.com/xhyan/p/8404318.html
Copyright © 2020-2023  润新知