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

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

在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。