Python str & repr

时间:2022-09-30 08:12:24

Python str & repr

repr 更多是用来配合 eval 的 (<- 点击查看),str 更多是用来转换成字符串格式的

str() & repr()

str() 和 repr() 都会返回一个字符串

但是 str() 返回的结果更加适合于人阅读,repr() 返回的结果更适合解释器读取

两者差异

示例:

string = 'Hello World'
print(str(string), len(str(string)))
print(repr(string), len(repr(string)))

输出结果:

Hello World 11
'Hello World' 13

说明 str() 返回的仍然是字符串本身,但是 repr() 返回的是带引号的字符串

__repr__ & __str__

在一个类中 __repr____str__ 都可以返回一个字符串

示例:

当类中同时有这两个方法

class Test(object):
def __init__(self):
pass def __repr__(self):
return 'from repr' def __str__(self):
return 'from str' test = Test()
print(test)
print(test.__repr__())
print(test.__str__())

输出结果:

from str
from repr
from str

当类中只有 __str__ 方法时

class Test(object):
def __init__(self):
pass def __str__(self):
return 'from str' test = Test()
print(test)
print(test.__repr__())
print(test.__str__())

输出结果:

from str
<__main__.Test object at 0x105df89e8>
from str

当类中只有 __repr__ 方法时

class Test(object):
def __init__(self):
pass def __repr__(self):
return 'from repr' test = Test()
print(test)
print(test.__repr__())
print(test.__str__())

输出结果:

from repr
from repr
from repr

说明 print() 函数调用的是 __str__ ,而命令行下直接输出时调用的是 __repr__

当类中没有 __str__ 时,会调用 __repr__ ,但是如果没有 __repr__ ,并不会去调用 __str__

Python str & repr的更多相关文章

  1. 通俗易懂方式解说Python中repr&lpar;变量&rpar;和str&lpar;变量&rpar;函数的区别

    老猿在<Python中repr(变量)和str(变量)的返回值有什么区别和联系>介绍了repr(变量)和str(变量)的区别和联系(对应特殊方法__repr__和__str__),但老猿刚 ...

  2. Python中repr&lpar;变量&rpar;和str&lpar;变量&rpar;的返回值有什么区别和联系

    Python中repr(变量)和str(变量)都返回一个描述对象的字符串,二者有关联又有不同.由于Python3.0后都是新式类,我们的分析也是基于新式类进行的.基于object派生的新式类中二者之间 ...

  3. &num;python str&period;format 方法被用于字符串的格式化输出。

    #python str.format 方法被用于字符串的格式化输出. #''.format() print('{0}+{1}={2}'.format(1,2,3)) #1+2=3 可见字符串中大括号内 ...

  4. Python str&lpar;&rpar; 函数

    Python str() 函数  Python 内置函数 描述 str() 函数将对象转化为适于人阅读的形式. 语法 以下是 str() 方法的语法: class str(object='') 参数 ...

  5. python item repr doc format slots doc module class 析构 call 描述符

    1.item # __getitem__ __setitem__ __delitem__ obj['属性']操作触发 class Foo: def __getitem__(self, item): r ...

  6. Python str 与 bytes 类型(Python2&sol;3 对 str 的处理)

    本文均在 Python 3 下测试通过,python 2.x 会略有不同. 1. str/bytes >> s = '123' >> type(s) str >> ...

  7. python str&lpar;&rpar;与repr&lpar;&rpar;

    相同点: 将任意值转为字符串 不同点: str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值,但很适合用于print语句输出 repr()出来的值是给pytho ...

  8. python - str和repr方法&colon;

    # python 内置__str__()和__repr__()方法: #显示自定制 # 示例1 # a = 123 # print(a.__str__()) # 示例2 class Test(): d ...

  9. Python之str&lpar;&rpar;&comma;repr&lpar;&rpar;&comma;&grave;&grave;

    对于对象obj: str()生成的字串是给人看的 repr()生成的字串是给解析器看的 ``与repr()等义. 最直接就是: ------------------- obj=eval(repr(ob ...

随机推荐

  1. ocp 1Z0-051 23-70题解析

    23. Examine thestructure proposed for the TRANSACTIONS table: name Null Type TRANS_ID NOT NULLNUMBER ...

  2. Log4Qt使用(三)在DailyRollingFileAppender类中增加属性mMaxBackupIndex

    在Log4Qt中存在一个比较大的问题,当使用 DailyRollingFileAppender对日志进行输出时,会无限输出文件,也就是说,当系统运行很久时,日志文件有可能很大,大到无法想象.因此,很多 ...

  3. &lpar;转&rpar;&lbrack;置顶&rsqb; Android APK反编译就这么简单 详解(附图) &period;

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...

  4. ip锁死怎么设置ip地址

    单击电脑网络连接图标,打开网络和共享中心   点击本地连接   点击详细信息,即可看到IP地址.子网掩码.默认网关.DNS服务器信息   再点击本地连接状态下的属性   找到Internet 协议版本 ...

  5. 【XSY2887】【GDOI2018】小学生图论题 分治FFT 多项式exp

    题目描述 在一个 \(n\) 个点的有向图中,编号从 \(1\) 到 \(n\),任意两个点之间都有且仅有一条有向边.现在已知一些单向的简单路径(路径上任意两点各不相同),例如 \(2\to 4\to ...

  6. Bootstrap常用单词组

    布局容器 .container 固定宽度 .container-fluid 全屏 .row 行 .col-lg- 大屏幕 .col-md- 中屏幕 变量 @grid-columns: 12 列数 @g ...

  7. 论文笔记:ATOM&colon; Accurate Tracking by Overlap Maximization

    ATOM: Accurate Tracking by Overlap Maximization  2019-03-12 23:48:42  Paper:https://arxiv.org/pdf/18 ...

  8. 4&period;0-uC&sol;OS-III目录结构

    本文章都是基于学习野火STMF4系列的开发板的学习做的,大部分都是开发手册的内容,做笔记用,具体请参考野火官方的开发手册. 1. uC/OS-III 文件结构 ①配置文件,通过定义这些文件里宏的值可以 ...

  9. 【Anaconda】:科学计算的Python发行版

    [背景] Python易用,但包管理和Python不同版本的问题比较头疼,特别是当你使用Windows的时候.为了解决这些问题,有不少发行版的Python,比如WinPython.Anaconda等, ...

  10. 解决Ajax跨域问题:Origin http&colon;&sol;&sol;127&period;0&period;0&period;1&colon;8080 is not allowed by Access-Control-Allow-Origin&period;

    在服务端上设置一下header,如response.header("Access-Control-Allow-Origin","*");