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

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

本文解析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 相关产品和应用

全部下载

专题列表