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(变量)和str(变量)函数的区别

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

  2. Python中repr(变量)和str(变量)的返回值有什么区别和联系

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

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

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

  4. Python str() 函数

    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/3 对 str 的处理)

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

  7. python str()与repr()

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

  8. python - str和repr方法:

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

  9. Python之str(),repr(),``

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

随机推荐

  1. Intellj IDEA 快捷键冲突

    Intellij IDEA快捷键冲突 [问题描述]: ctr + alt + 方向键 与系统的快捷键冲突,按快捷键,屏幕方向发生改变. [解决办法]: ctr + alt + F12 调用出Intel ...

  2. redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决

    写在前面: 环境建议:VM 15.5,因为15.5修复了诸多bug,可以在安装过程中省去不少麻烦 添加新的虚拟机安装redhat7.7 准备redhat7.7的安装包...百度云不让上传噢噢噢噢,这里 ...

  3. centos安装nodejs并配置生产环境,基于pm2

    安装nodejs和yarn的命令: curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum. ...

  4. iOS: 本地通知的前后变化(iOS10)

    一.介绍  通知和推送是应用程序中很重要的组成部分.本地通知可以为应用程序注册一些定时任务,例如闹钟.定时提醒等.远程推送则更强大,提供了一种通过服务端主动推送消息到客户端的方式,服务端可以更加灵活地 ...

  5. Python 爬虫介绍,什么是爬虫,如何学习爬虫?

    ​ 作为程序员,相信大家对“爬虫”这个词并不陌生,身边常常会有人提这个词,在不了解它的人眼中,会觉得这个技术很高端很神秘.不用着急,我们的爬虫系列就是带你去揭开它的神秘面纱,探寻它真实的面目. 爬虫是 ...

  6. 为什么 Java 不是纯面向对象语言?

    什么是纯面向对象语言? 纯面向对象语言或完全面向对象语言是指完全面向对象的语言,它支持或具有将程序内的所有内容视为对象的功能.它不支持原始数据类型(如 int,char,float,bool 等).编 ...

  7. RAID 2.0 技术(块虚拟化技术)

    RAID 2.0 技术(块虚拟化技术) RAID 2.0 技术(块虚拟化技术),该技术将物理的存储空间划分为若干小粒度数据块,这些小粒度的数据块均匀的分布在存储池中所有的硬盘上,然后这些小粒度的数据块 ...

  8. 使用VS2017+WDK10开发xp驱动

    VS2017+WDK10使用默认配置可以开发出运行在win7的驱动,但要开发运行在xp的驱动,还要进行如下操作: Dervier Settings -> Driver Model -> t ...

  9. ASP.NET Core框架深度学习(三) Server对象

    8.Server   第五个对象 服务器在管道中的职责非常明确,当我们启动应用宿主的WebHost的时候,服务它被自动启动.启动后的服务器会绑定到指定的端口进行请求监听,一旦有请求抵达,服务器会根据该 ...

  10. python爬取网站视频保存到本地

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Woo_home PS:如有需要Python学习资料的小伙伴可以加点 ...