ptyhon学习007-----python中%s和%r的区别

在python中,%s和%r是我们常用的格式符,它们的用法基本一致,但作用却不尽相同,下面简要说明一下两者的区别:
1.%s是将对象/变量传递到str()方法中,并将其转化为面向用户的可阅读的格式。
2.%r是将对象/变量传递到rper()方法中,并将其转化成面向机器的可阅读的合适。可理解为:%r在打印时能重现它所代
   表的对象,它会将后面给的参数原样打印出来,带有类型信息。
(最新、最简洁的说明请参考分割线下的补充部分)
下面举例说明:
1.在处理数字时,如int型(或double型、float型),两者没有什么区别。因为%s为了适合用户阅读,转换成了int型;而%r所代表的对象也是int型,故两者并无区别。(代码见下)
2.在处理字符串时,%s为了适合读者阅读,会将字符串转换为不带引号的文本;而%r所代表的对象为字符串,所以这时会转换为带引号的文本。(代码见下)
3.在处理date对象时,%s为了适合读者阅读,会将date对象转换为时间文本显示;而%r所代表的字符串为时间对象,所以会把该对象原原本本地显示出来。(代码见下)

print("=====1.处理数字时:=====")
print("我是湖水微澜,这是我的第%d篇python学习笔记"%7)
print("我是湖水微澜,这是我的第%s篇python学习笔记"%7)
print("我是湖水微澜,这是我的第%r篇python学习笔记"%7)
print("=====2.处理字符串时:=====")
a = "湖水微澜"
print("我是%s,这是我的第7篇python学习文章"%a)
print("我是%r,这是我的第7篇python学习文章"%a)
print("=====3.处理对象时:=====")
import datetime
time = datetime.date.today()
print("今天是:%s"%time)
print("今天是:%r"%time)

   运行结果如图:ptyhon学习007-----python中%s和%r的区别_第1张图片
====================================我是分割线===========================================
实际上:%r和%s更准确、更易于理解的区别为:
1.%r打印的是你写在脚本里的内容;
2.%s打印的是你应该看到的内容。
如以下代码:

#%r与%s的比较
s1 = '%r的双引号输出'
s2 = '%s的双引号输出'
s3 = '%r的单引号输出'
s4 = '%s的单引号输出'
print("接下来使用\"%r\""%s1)   #%r连字符串两边的单引号都输出了,即写什么就输出什么
print('接下来使用\"%r"'%s3)
print("接下来使用\"%s\""%s2)   #%s只输出我们想要看到的内容。
print("接下来使用\"%s\""%s4)   

运行结果如图:

以上便是笔者对%s和%r的一些个人理解,如有疏漏,欢迎大家批评、补充、指正。

你可能感兴趣的:(python)