python中%r和%s的区别

21
Jun

python中%r和%s的区别

%r用rper()方法处理对象

%s用str()方法处理对象

有些情况下,两者处理的结果是一样的,比如说处理int型对象。

And:

%r 调用 rper函数打印字符串,repr函数返回的字符串是加上了转义序列,是直接书写的字符串的形式

%s 调用 str函数打印字符串,str函数返回原始字符串

例一:


print "I am %d years old." % 22
print "I am %s years old." % 22
print "I am %r years old." % 22


返回结果:



I am 22 years old.
I am 22 years old.
I am 22 years old.


另外一些情况两者就不同了


例二:


text = "I am %d years old." % 22
print "I said: %s." % text
print "I said: %r." % text


返回结果:



I said: I am 22 years old..
I said: 'I am 22 years old.'. // %r 给字符串加了单引号


再看一种情况


例三:


import datetime
d = datetime.date.today()
print "%s" % d
print "%r" % d



返回结果:

2014-04-14
datetime.date(2014, 4, 14)


可见,%r打印时能够重现它所代表的对象(rper() unambiguously recreate the object it represents)

2017年7月2日更新

我应该使用 %s 还是 %r? 

你应该使用 %s,只有在想要获取某些东西的 debug 信息时才能用到 %r。 %r 给你的是变量的 “程序员原始版本”,又被称作“representation”。 
为什么 “one” 要用引号,而 True 和 False 不需要? 因为 True 和 False 是 Python 的关键字,用来表示真假的意义。如果你加了引号,它们就变成 了字符串,也就无法实现它们本来的功能了。
使用了 %r 后转义序列都不灵了。 因为 %r 打印出的是你写到代码里的原始字符串,其中会包含原始的转义字符。你应该使用 %s, 记住这条:``%r`` 用作 debug,``%s`` 用作显示。


如果您觉得本文还不错,可以点击下面赞赏我们!

支付宝赞赏      微信赞赏