Python中%r与%s格式化输出的区别详解

阿麦
阿麦
发布时间:2026-10-13| 6人浏览过
原创

本文解析Python字符串格式化中%r与%s的核心区别。%s调用str()生成人类可读字符串,而%r调用repr()保留对象原始表示形式。通过整数、字符串及日期对象的实例对比,展示两者在处理不同类型数据时的输出差异,帮助开发者正确选择格式化方式。

%r与%s的基本定义

在Python的字符串格式化操作中,%r占位符内部调用的是对象的repr()方法。

相比之下,%s占位符内部调用的是对象的str()方法。

在部分特定场景下,两者的输出结果可能完全一致。

例如,当处理整数类型(int)的对象时,无论使用哪种方式,最终呈现的数值内容通常没有区别。

具体代码示例如下:

print('I am %s years old.' % 22) print('I am %r years old.' % 22)

上述代码的执行输出结果为:

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

不同数据类型的输出差异

然而,在处理字符串或其他复杂对象时,两者的结果往往存在显著差异。

以下示例展示了字符串格式化时的不同表现:

x = "There are %d types of people." % 10 print('I said: %r' %x) print('I said: %s' %x)

对应的程序输出结果如下:

I said: 'There are 10 types of people.' # 通过%r 保留了原有所有属性 I said: There are 10 types of people.

另一个涉及日期对象的示例:


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

其运行结果如下:

2020-04-02 2020-04-02 datetime.date(2020, 4, 2)

以上即为关于Python中%r与%s格式化用法的完整解析,希望内容能对读者的学习与实践提供有益参考,欢迎继续支持本站获取更多技术资讯。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

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 算法库。