所以我有这段代码:
formatter = "%r %r %r %r"
print formatter % (1, 2, 3, 4)
print formatter % ("one", "two", "three", "four")
我得到了这个输出:
1 2 3 4
'一''两''三''四'
我的问题是:
为什么第二行输出有单引号?我不太确定%r转换类型是如何工作的。
当我将代码更改为:
时formatter = "%r %r %r %r"
print formatter % (1, 2, 3, 4)
print "%s %s %s %s" % ("one", "two", "three", "four")
我得到了这个结果:
1 2 3 4
一二三四
我只是不明白为什么他们的工作方式不同。有人可以为我分解吗?
我读过:
答案 0 :(得分:2)
使用表达式'abc%rdef' % obj
,部分'%r'
将替换为repr(obj)
使用表达式'ABC%sDEF' % obj
,部分'%s'
将替换为str(obj)
repr()是一个函数,对于公共对象,返回一个字符串,该字符串与您在脚本中写入的字符串相同,以定义作为参数传递给的对象repr()功能:
对于许多类型,此函数尝试返回一个字符串 传递给eval()时会产生一个具有相同值的对象 http://docs.python.org/library/functions.html#repr
示例1
如果您考虑li = [12,45,'haze']
print li
将打印 [12,45,'haze']
print repr(li)
还会打印 [12,45,'haze'] ,因为[12,45,'haze']
是在脚本中编写的字符序列,用于定义列表< strong> li 使用此值
示例2
如果考虑ss = 'oregon'
定义的字符串:
print ss
将打印 oregon ,不附带任何引用
print repr(ss)
将打印'oregon',因为如果要定义字符串 ss,'oregon'
是您必须在脚本中编写的字符序列,程序中的值 oregon
所以,这意味着,事实上,对于常见对象, repr()和 str()返回一般相等的字符串,但字符串对象除外。这使得 repr()对于字符串对象特别有趣。例如,分析HTML代码的内容非常有用。
答案 1 :(得分:0)