Python中%r和%s的区别与使用场景

Hazel
Hazel
发布时间:2026-10-11 | 1人浏览过
原创

在Python中,%r和%s是两种常用的字符串格式化操作符。它们的核心区别在于处理对象的方法不同:%s使用str(),而%r使用repr()。理解这一区别对于编写清晰、易调试的代码至关重要。

核心区别:str() vs repr()

在Python中,%s和%r的主要区别在于它们处理对象的方式:

  • %s:使用 str() 方法处理对象。它旨在生成一个对用户友好的、可读性强的字符串表示。
  • %r:使用 repr() 方法处理对象。它旨在生成一个开发者友好的、能重现该对象的字符串表示,通常用于调试。

基本类型示例:整数

当处理整数(int)时,%s和%r的输出结果通常是一样的,因为整数的字符串表示和repr表示是相同的。

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. 

字符串示例:引号的处理

当处理字符串时,%s和%r的区别变得明显。%s直接输出字符串内容,而%r会加上引号(通常是单引号),以明确表示这是一个字符串对象。

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 给字符串加了单引号 

日期对象示例

对于更复杂的对象,如日期对象,%s和%r的区别更加显著。%s输出一个简洁的、人类可读的日期格式,而%r输出一个更详细的、包含类名和构造参数的字符串。

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

输出结果为:

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

总结

选择使用%s还是%r,取决于你的需求:

  • 如果你希望输出对用户友好、易于阅读,使用%s。
  • 如果你希望输出对开发者友好、便于调试和重现对象,使用%r。

以上就是Python中%r和%s的区别与使用场景的详细内容,更多关于Python格式化字符串的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表