python占位符%r
时间: 2025-05-11 07:25:49 浏览: 40
### 关于 `%r` 占位符的用法
在 Python 的字符串格式化操作中,`%r` 是一种特殊的占位符,它会调用对象的 `__repr__()` 方法来获取该对象的字符串表示形式[^2]。通常情况下,`%r` 返回的结果是一个可以用来重新创建该对象的字符串表达式。
以下是关于 `%r` 占位符的一些具体说明:
#### 1. 基本功能
`%r` 主要用于调试目的,因为它返回的是对象的“原始”字符串表示形式,而不是经过美化后的版本。这种行为与 `%s` 不同,后者更倾向于提供可读性强的字符串输出[^3]。
#### 2. 示例代码
下面是一些具体的例子展示如何使用 `%r` 占位符:
```python
# 字符串示例
value = 'hello world'
print('The value is %r' % value)
# 整数示例
number = 42
print('The number is %r' % number)
# 浮点数示例
floating_point = 3.14159
print('The floating point is %r' % floating_point)
# 列表示例
my_list = [1, 2, 3]
print('The list is %r' % my_list)
```
上述代码分别展示了不同数据类型的 `%r` 输出效果。对于列表或其他复杂结构,`%r` 将尽可能还原其完整的内部状态[^4]。
#### 3. 对比 `%s` 和 `%r`
虽然 `%s` 和 `%r` 都能将变量转化为字符串,但它们的行为有所不同:
- `%s` 调用了对象的 `__str__()` 方法,适合生成供人类阅读的内容。
- `%r` 调用了对象的 `__repr__()` 方法,更适合程序内部使用的精确描述。
例如:
```python
class MyClass:
def __init__(self, name):
self.name = name
def __str__(self):
return f"MyClass instance with name={self.name}"
def __repr__(self):
return f"MyClass(name='{self.name}')"
obj = MyClass("test")
print("Using %s: %s" % ("example", obj))
print("Using %r: %r" % ("example", obj))
```
运行以上代码后可以看到两者的区别:前者更加友好易懂,而后者则提供了详细的类定义信息[^1]。
---
###
阅读全文
相关推荐


















