栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

!r在str()和repr()中做什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

!r在str()和repr()中做什么?

为了格式的东西
一个字符串中的东西的字符串表示必须先创建。“转换值”基本上是在谈论如何构造字符串表示形式。在python中,有两种相当自然的选择来获取…

str
和的字符串表示形式
repr

str
通常更人性化,
repr
更精确。也许官方文档是寻找差异的最佳地方:

object.__repr__(self)

*由

repr()
内置函数调用以计算对象的“正式”字符串表示形式。如果可能的话,这应该看起来像一个有效的Python表达式,可以用来重新创建具有相同值的对象(给定适当的环境)。如果这不可能,
<...someusefuldescription...>
则应返回形式的字符串。返回值必须是一个字符串对象。如果定义了一个类
__repr__()
但未定义
__str__()
,则
__repr__()
当需要该类的实例的“非正式”字符串表示形式时,也会使用该类。

  • 这通常用于调试,因此,表示形式应具有丰富的信息且无歧义,这一点很重要。

object.__str__(self)

*由str(object)和内置函数format()和print()调用以计算对象的“非正式”或可很好打印的字符串表示形式。返回值必须是一个字符串对象。

*此方法的不同之处在于,

object.__repr__()
不期望
__str__()
返回有效的Python表达式:可以使用更方便或更简洁的表示形式。

  • 内置类型object invokes定义的默认实现
    object.__repr__()

在中

str.format
!s
选择用于
str
格式化对象,而
!r
选择
repr
格式化值。

字符串之间的区别很容易看出来(因为

repr
字符串将包含外部引号):

>>> 'foo {}'.format('bar')'foo bar'>>> 'foo {!r}'.format('bar')"foo 'bar'"

这两种方法之间的区别实际上主要取决于要格式化的对象。对于许多对象(例如那些不覆盖该

__str__
方法的对象),格式化输出将没有差异。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号