首页 经验

python ---- %r %s格式输出的区别

时间: 2024-10-20 09:01:05

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)


在 Python 中,%r%s 是用于格式化字符串的两种不同的占位符,它们是通过 % 运算符来实现字符串格式化的方式之一。它们之间的主要区别在于它们如何表示对象:


1. %s 占位符


- 功能:使用 str() 函数将对象转换为字符串。

- 用途:适用于需要给用户友好展示的文本输出。

- 示例


python

name = "Alice"

age = 30


# 使用 %s 格式化

output = "Name: %s, Age: %s" % (name, age)

print(output)  # 输出: Name: Alice, Age: 30


2. %r 占位符


- 功能:使用 repr() 函数将对象转换为字符串,通常会返回一个包含对象的信息的字符串,适合用于调试。

- 用途:适用于需要显示对象的“官方”字符串表示,或者用于调试目的。

- 示例


python

name = "Alice"

age = 30


# 使用 %r 格式化

output = "Name: %r, Age: %r" % (name, age)

print(output)  # 输出: Name: 'Alice', Age: 30


总结


- %s 会调用 str() 方法,适合用于用户视图输出。

- %r 会调用 repr() 方法,适合用于开发者调试时查看对象的原始表示。


举个例子


以下例子展示了两者的不同:


python

data = ["apple", "banana", "cherry"]


# 使用 %s

print("List: %s" % data)  # 输出: List: ['apple', 'banana', 'cherry']


# 使用 %r

print("List: %r" % data)  # 输出: List: ['apple', 'banana', 'cherry']


但要注意,%s 不会添加引号包围字符串,而 %r 会。例如:


python

string = "Hello, world!"


# 使用 %s

print("String: %s" % string)  # 输出: String: Hello, world!


# 使用 %r

print("String: %r" % string)  # 输出: String: 'Hello, world!'


这种区别尤其在调试时非常有用,通过 %r 可以帮助开发者更清楚地了解对象的实际内容和类型。


上一个 Protocol Buffers(通常简写为 Protobuf)是由 Google 开发的一种语言无关、平台无关、可扩展的序列化结构数据的机制 文章列表 下一个 clickhouse

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号