根据Python
2.7.12文档
:
!s
(applystr()
)和!r
(applyrepr()
)可用于在格式化之前转换值。>>> import math >>> print 'The value of PI is approximately {}.'.format(math.pi) The value of PI is approximately 3.14159265359. >>> print 'The value of PI is approximately {!r}.'.format(math.pi) The value of PI is approximately 3.141592653589793.
有趣的是,转换后的值是的输出repr()
,而不是str()
。
>>> str(math.pi)
'3.14159265359'
>>> repr(math.pi)
'3.141592653589793'
那么,“转换价值”在这里意味着什么?使其难以为人所知?
为了格式的东西 在
一个字符串中的东西的字符串表示必须先创建。“转换值”基本上是在谈论如何构造字符串表示形式。在python中,有两种相当自然的选择来获取…str
和的字符串表示形式repr
。
str
通常更人性化,repr
更精确。也许官方文档是寻找差异的最佳地方:
object.__repr__(self)
* 由
repr()
内置函数调用以计算对象的“正式”字符串表示形式。如果可能的话,这应该看起来像一个有效的Python表达式,可以用来重新创建具有相同值的对象(给定适当的环境)。如果这不可能,<...some useful description...>
则应返回形式的字符串。返回值必须是一个字符串对象。如果定义了一个类__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__
方法的对象),格式化输出将没有差异。
问题内容: python 2.7.5和函数之间的区别是什么? python.org上的说明: 该功能是指以返回其是相当值的表示 人类可读 ,而意在产生可以表示 由解释器读取 (或将强制如果没有相当的语法) 但这对我来说还不清楚。 一些例子: 所以我想知道以下 什么时候应该使用?什么时候应该使用? 在哪种情况下我可以使用它们中的任何一个? 做什么不能做? 做什么不能做? 问题答案: 我什么时候应该使
本文向大家介绍Python 基础教程之str和repr的详解,包括了Python 基础教程之str和repr的详解的使用技巧和注意事项,需要的朋友参考一下 Python str和repr的详解 str可以将值转化为合理的字符串形式,以便用户可以理解; repr会以合法Python表达式的形式来表达值。 举例如下: 注意到,str表示一种类型,即字符串;repr则是一个函数。 如有疑问请留言或者到
本文向大家介绍python使用str & repr转换字符串,包括了python使用str & repr转换字符串的使用技巧和注意事项,需要的朋友参考一下 可能比较 low 还是记录一下: str 和 repr的使用过程 str 是一个类型 (int, long 类似), 同样她也可以作为一个工厂方法 实例一个 string repr 是python 内置的函数, 用于保留一个 打印值在pytho
VSCode 对两个类 self.save_data.prop 的类型推断结果: int* | str* 和 int | str 有什么区别,多出来的星号是什么意思?
问题内容: 我只知道该功能。是否还有其他的功能类似,和? 问题答案: ~ ~ 我不确定是否等效。
问题内容: 好的,我尝试查找或shift的含义,但是此站点对此进行了解释:http : //www.janeg.ca/scjp/oper/shift.html 如果和孩子说话,会是什么解释? 问题答案: 计算机是二进制设备。因此,数字由1和0的序列表示。 移位只是简单地左右移动那些1和0的序列。 因此,操作员要做的就是将这些位向右移一位。 考虑数字101: 在这种情况下,最低有效位被截断了。显然,