zoukankan      html  css  js  c++  java
  • python---str和repr

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

    区别与使用

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> number = 123456789
    >>> type(str(number))
    <class 'str'>
    >>> type(repr(number))
    <class 'str'>
    >>> print(repr(number))
    123456789
    >>> print(str(number))
    123456789

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

    1
    2
    3
    4
    >>> print(str('123456789'))
    123456789
    >>> print(repr('123456789'))
    '123456789'

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

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

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

    1
    2
    3
    4
    >>> print('123456789'.__repr__())
    '123456789'
    >>> print('123456789'.__str__())
    123456789

    不同数据类型的不同处理

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

    代码实例:

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

    结果是相同的。

    而字符串和浮点数,它们的处理方式不同。

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

    Python3版本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> 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版本:

    1
    2
    3
    4
    >>> str(1.0/7.0)
    '0.142857142857'
    >>> repr(1.0/7.0)
    '0.14285714285714285'
  • 相关阅读:
    Java Thread(一) Outline
    Gradle学习(四) web工程构建
    Gradle学习(三) 依赖管理基础
    Gradle学习(二) Java Plugin
    Gradle学习(一)
    二维码zxing源码分析(五)精简代码
    二维码zxing源码分析(四)wifi部分
    二维码扫描 zxing源码分析(三)result、history部分
    二维码zxing源码分析(二)decode部分
    二维码zxing源码分析(一)camera部分
  • 原文地址:https://www.cnblogs.com/Kingfan1993/p/9636602.html
Copyright © 2011-2022 走看看