Python中%r与%s格式化输出的区别详解
本文解析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格式化用法的完整解析,希望内容能对读者的学习与实践提供有益参考,欢迎继续支持本站获取更多技术资讯。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













