总的来说 str():将传入的值转换为适合人阅读的字符串形式 repr():将传入的值转换为 Python 解释器可读取的字符串形式 传入整型 # number resp = str(1) print(...resp, type(resp), len(resp)) resp = str(1.1) print(resp, type(resp), len(resp)) resp = repr(1) print...(resp, type(resp), len(resp)) resp = repr(1.1) print(resp, type(resp), len(resp)) # 输出结果 1 1 1.1 3 1 1 1.1 3 传入字符串 # string resp = str("test") print...class 'str'> 4 'test' 6 repr() 会在原来的字符串上面加单引号,所以字符串长度会 +2
参考链接: Python中的str()vs repr() Python repr() 或str() 函数 Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。 ...repr()与反引号操作符``做的是完全一样的事情; repr()返回的是一个对象的"官方"字符串表示(对python比较友好),绝大多数情况下可以通过求值运算(使用内建函数eval())重新得到该对象...即 obj= eval(repr(obj)),也有情况下,不能够通过eval()得到原来的对象: str() 生成一个对象的可读性好的字符串表示(对用户比较友好),它返回的结果通常无法用于eval(...大多数情况下,二者输出的结果是完全一样的。
在类的定义中,我们通常会看到 __str__() 方法和 __repr__() 方法,那么这两个方法的作用是什么以及如何使用他们呢?本文便来介绍下这两个方法。...标准库的类 我们先通过 date 模块里的 today 类来直观认识下 __str__() 和 __repr__() 。...直接输出对象会隐式的调用对象的 __repr__() 方法。我们也可以直接调用 str() 方法和 repr() 方法进行输出。...在这种情况下使用的是缺省的 __str__() 和 __repr__() 。 类中包含 __str__() 下面在类中添加 __str__() 方法。 >>> class Dog: ......总结 当自定义类中没有定义 __str__() 和 __repr__() 时,在进行对象的输出时,会调用默认的 __str__() 和 __repr__() ;当类中只包含 __str__() 时,调用
简而言之: __str__ 的目标在于可读性(对用户更友好) __repr__ 的目标在于无歧义(更有助于调试) 举个栗子(Difference between str and repr?)...>>> repr(today) 'datetime.datetime(2020, 3, 28, 11, 6, 49, 580643)' 注:str()和repr()函数分别调用的是 __str__ 和...__repr__ 从上面不难看出, __str__ 强调对于用户的可读性,而 __repr__则倾向于描述对象本身。...另外在《流畅的Python》一书中提到如果这两个方法只实现一个的话,那么 __repr__ 会是更好的选择。因为如果一个对象没有 __str__ 函数,解释器会用 __repr__代替,反之则不成立。...参考代码(Difference between str and repr?)
前言 在学习BeautifulSoup文档的时候发现了一个以前不常见的Python内建函数repr(),带着好奇对这个内建函数进行了一番搜索和学习。...总结 str()与repr()都是Python的内建函数,通过它们可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。...大多数情况下他们的效果相同,但是既然是不同的函数肯定有不同的地方,概括起来可以这样说str()会将对象转化为可读性较好的字符串,而repr()会将对象转化为供解释器读取形式的字符串。...一个对象没有适于人阅读的解释形式的话,str()会返回与repr()相同的值。 其中,数值或list、tuple、字典等这样的结构,针对各种函数都有着统一的解读方式。...举例 在下列情况下两者效果相同: 123456789101112131415161718192021222324>>> str(123)'123'>>> repr(123)'123'>>> str(
在stackoverflow有一个很精辟的回答解释这两个内置方法的区别,简单来说,__str__方法是表现给使用者使用的,而__repr__方法是给程序员用的。...return '__str__' def __repr__(self): return '__repr__' my_book=book() print(my_book) __...str__ my_book Out[13]: __repr__ 我们可以简单的看出print方法调用的是__str__,因为这是展现给使用者的,而直接在python的解释器,返回的是__repr__方法...import datetime today=datetime.date.today() str(today) Out[16]: '2018-02-15' repr(today) Out[17]: 'datetime.date...(2018, 2, 15)' 管中窥豹,str(today)返回的是2018-02-15,我们可以看出来具体的时间,而repr(today)返回的是datetime.date这个方法,显然我们可以直接使用这个方法实例化
文章总览图 使用str函数或者print打印对象时会优先触发str方法,没定义str方法的情况下,会再去找repr方法,如果都没有,那么就会去找父类的str方法。...如果父类没有str方法,会找父类的repr方法,如果继承object的话,object里面肯定有str方法的。除非是继承一个自己定义的类。...在交互环境下输入对象和直接通过repr这个内置函数处理对象的时候,它只会触发repr方法,如果repr方法不存在,会找父类的repr方法,不会去找str方法。 repr方法是str方法的备胎。...print打印是由str方法决定的,交互环境下是由repr方法决定的。...res=repr(m) print(res) str和repr方法都是返回字符串。
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即str() 或者 repr() 。...而 print 结合 repr() 实际上是调用对象的__repr__方法输出结果。下例中我们用 str 对象直接调用这两个方法,输出结果的形式与前一个例子保持一致。 >>> print('123'....因此 str() 与 repr() 的不同在于: str() 的输出追求可读性,输出格式要便于理解,适合用于输出内容到用户终端。...repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用。...另外如果想要自定义类的实例能够被 str() 和 repr() 所调用,那么就需要在自定义类中重载__str__和 __repr__方法。
__str__ 打印时触发 class A: def __str__(self): #打印时候执行的代码块 return 'ok' # 如果不返回字符串类型,则会报错...__str__()) # 打印的时候就是在打印返回值 二.__ repr__ str函数或者print函数--->obj.str() repr或者交互式解释器--->obj.repr() str函数或者...print函数如果__str__没有被定义,那么就会使用__repr__来代替输出 str函数或者print函数如果__str__被定义,那么__repr__就不会执行 注意:这俩方法的返回值必须是字符串
前言 在Pyhton 中,如果想定制化打印出实例对象的信息,那可以使用__str__和__repr__魔法方法来定制化显示。...__str__和__repr__ 在Python中,打印一个自定义类的实例对象所显示的信息往往是很不友好的,如下所示: >>> class Animal(): ......__和__repr__ 所起的作用就是定制化显示输出信息(你想输出什么就是什么),当然,两者也有区别的,区别如下: •对于print和str内置函数,程序会首先尝试__str__,如果没有__str__...•在交互式回应,repr函数中__repr__会被调用,你可以这么认为,__str__ 是给用户看的,__repr__则是给开发者看的....kitty' >>> repr(dog) 'Animal:name is kitty' 从上面示例可以看出 print 和 str函数中调用的是 __str__, 而在交互式响应中 和 repr函数中调用的是
前言 Python中__repr__和__str__使用区别 __repr__ 使用 很多时候我们在创建一个类的时候,在终端打印类的实例,看到的是一个类似于这样的内容:<XXX object at 0x0000000001222E10...object at 0x000,只有print()输出的时候才会打印__str__返回的内容 总结 注意:__str__()方法和__repr__()方法的返回值只能是字符串!...__repr__和__str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向开发者 关于调用两种方法的时机 使用print()时 使用%s和f’{}’拼接对象时 使用str...特别地,对于下面两种场景: 用%r进行字符串拼接时 用repr(x)转换对象x时 则会调用这个对象的__repr__()方法;若没有,则不再看其是否有__str__()方法,而是显示其内存地址。...当我们想在不同环境下支持不同的显示,例如终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str__只是覆盖了__repr__以得到更友好的用户显示。
参考链接: Python repr() 前言 python中转换成字符有两种方法:str()和repr(),这两种又有什么区别?什么时候用str?什么时候用repr?...abd' >>> str('abd') == 'abd' True >>> repr('abd') == 'abd' False >>> len(repr('abd')) #repr转换后的字符串和str...转换后的字符串个数都是不一样的 5 >>> len(str('abd')) 3 命令行下print和直接输出的对比 每个类都有默认的__repr__, __str__方法,在命令行下用print 实例时调用的是类的...return 'str' ... >>> a = A() >>> a #直接输出调用的是repr方法 repr >>> print(a) #print调用的是str方法 str repr的使用场景...repr方法,print输出调用的是str方法
__repr__ 接下来我们看一看__str__和__repr__有哪些异同。...根据Python官方文档定义: __str__:通过str(object)以及内置函数format()和print()调用以生成一个对象的“非正式”或格式良好的字符串表示。返回值必须是字符串对象。...(y) 'pythonic' >>> z = '4' >>> repr(z) "'4'" >>> str(z) # 注意,此处的输出结果形式跟str(x)一样,但x和z的类型并不一样 '4' >>>...4") False 当x=4,当x为整数类型时,调用str()和repr()的返回结果是一样, 而当y为字符串类型时,repr(y)的结果就是“正式”的字符串表示,而str(y)的结果则是“非正式”的。...容器的 __str__ 方法的使用包含对象的 __repr__ 参考资料: “Difference between __str__ and __repr__ in Python” Fluent Python
上面打印类对象并不是很友好,显示的是对象的内存地址 # 下面我们重构下该类的__repr__以及__str__,看看它们俩有啥区别 # 重构__repr__ class TestRepr(Test):...# 你会发现,直接输出对象ts时并没有按我们__str__方法中定义的格式进行输出,而用print输出的信息却改变了 __repr__和__str__这两个方法都是用于显示的,__str__是面向用户的...打印操作会首先尝试__str__和str内置函数(print运行的内部等价形式),它通常应该返回一个友好的显示。...__repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str。...当我们想所有环境下都统一显示的话,可以重构__repr__方法;当我们想在不同环境下支持不同的显示,例如终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str
在Python面向对象编程中,魔术方法是一组特殊的方法,用于在特定情况下调用对象的操作。其中,__str__和__repr__方法是最常用的魔术方法之一。...下面是一个简单的例子,演示了如何使用__str__和__repr__方法:class MyClass: def __init__(self, name, age): self.name...# 使用__str__方法打印对象的可读性更好的表示形式print(obj) # 输出: Alice is 25 years old.# 使用__repr__方法打印对象的字符串表示形式print(repr...接着,我们实现了__str__和__repr__方法。在__str__方法中,我们返回了一个字符串,描述了该对象的可读性更好的表示形式。...最后,我们创建了一个MyClass对象obj,并使用print语句和repr函数分别打印了它的可读性更好的表示形式和字符串表示形式。
各位读者大大们大家好,今天学习str() 与 repr()的对比,并记录学习过程欢迎大家一起交流分享。 ?...新建一个python文件命名为py3_str_vs_repr.py,在这个文件中进行操作代码编写: a = [1,2,3,4] b = 'Hello Moto' print(str(a)) print(...repr(a)) #list:发现使用str()和repr() #打印的的结果一样 print(str(b)) print(repr(b)) #String:str()打印结果含有单引号 #repr()...打印结果没有双引号 #上边的代码运行之后好像看不出来 #str()和repr()之间有什么区别 #根据官方解释 #str()目标是可读性的打印 #repr()目标是打印明确的信息 #例如: import...print(repr(times)) #datetime.datetime(2019, 5, 29, 21, 34, 0, 10000) #所以说repr()更面向的是开发者去调试程序使用 #str(
python 魔术方法(二) 对象的创建与单例模式的实现 但有另外两个常用的魔术方法也一样困扰着很多 Python 程序员,那就是本文将介绍的用于对象字符串化的两个方法 — __repr__ 和 __str...logging 打印日志的目的一致,此时调用的是 __str__ 方法 容器的 __str__ 方法调用的是每一个成员的 __repr__ 方法 3....__repr__ TechlogTest.__repr__ [TechlogTest.__repr__] 所有需要调用 __str__ 的地方都改为调用了我们实现的 __repr__ 4....结论 我们看到,默认的方式通常并不是我们想要的,而如果我们只实现了 __repr__,那么所有需要使用 __str__ 的场景都会去调用 __repr__ 因此,实践中的建议是,为每个类都实现 __repr...,解释器循环调用他们的 __repr__ 方法,这种问题是需要格外注意和避免的。
__call__:实现了__call__的对象是可调用的 __repr__:实现了__repr__的对象可以输出对象的相应属性信息 比如说: class Student: def __init__(...self,id,name): self.id=id self.name=name def __repr__(self): return 'id='+str(self.id)+...callable(stu) 输出:True 那么,就可以使用如下方式调用该对象: stu() 输出: I can be called my name is 张三 而对于实现了__repr__魔术方法的类而言...,我们可以使用如下方式打印其相关的属性信息: print(stu) 输出: id=1, name=张三 需要注意的是,我们需要将self.id转换成str的格式,不然会报错。...也就是说__repr__实际上是将对象以字符串的格式进行输出。
参考链接: Python | 字符串lower Python 中 str.format() 方法详解 转载请注明出处:https://blog.csdn.net/jpch89/article/details.../84099277 文章目录 Python 中 str.format() 方法详解0....术语说明 str.format() 方法通过字符串中的花括号 {} 来识别替换字段 replacement field,从而完成字符串的格式化。... str.format() 方法还可以使用 *元组 和 **字典 的形式传参,两者可以混合使用。...: s:传递参数之前先对参数调用 str()r:传递参数之前先对参数调用 repr()a:传递参数之前先对参数调用 ascii() ascii() 函数类似 repr() 函数,返回一个可以表示对象的字符串
参考链接: Python | 字符串translate Python 中 str.format() 方法详解 转载请注明出处:https://blog.csdn.net/jpch89/article/...details/84099277 文章目录 Python 中 str.format() 方法详解0....术语说明 str.format() 方法通过字符串中的花括号 {} 来识别替换字段 replacement field,从而完成字符串的格式化。... str.format() 方法还可以使用 *元组 和 **字典 的形式传参,两者可以混合使用。...: s:传递参数之前先对参数调用 str()r:传递参数之前先对参数调用 repr()a:传递参数之前先对参数调用 ascii() ascii() 函数类似 repr() 函数,返回一个可以表示对象的字符串
领取专属 10元无门槛券
手把手带您无忧上云