python repr 和 str 区别
【摘要】 在Python中,repr() 和 str() 是两个内置函数,它们都用于将对象转换为字符串表示,但它们的用途和输出格式有所不同。 str() 函数str() 函数的主要目的是返回一个对象的“非正式”或“可打印”的字符串表示。这个表示通常是为了人类阅读而设计的,它应该是一个有效的Python表达式(尽管不一定能够重新创建原始对象),但更重要的是,它应该是易于理解的。对于大多数内置类型,str...
在Python中,repr()
和 str()
是两个内置函数,它们都用于将对象转换为字符串表示,但它们的用途和输出格式有所不同。
str()
函数
str()
函数的主要目的是返回一个对象的“非正式”或“可打印”的字符串表示。- 这个表示通常是为了人类阅读而设计的,它应该是一个有效的Python表达式(尽管不一定能够重新创建原始对象),但更重要的是,它应该是易于理解的。
- 对于大多数内置类型,
str()
的输出是尽可能简洁和易读的。
repr()
函数
repr()
函数返回一个对象的“正式”字符串表示,也称为“官方”字符串表示。- 这个表示的目的是尽可能准确地表示对象,以便它可以被重新解析回原来的对象(如果可能的话)。
repr()
的输出通常比str()
更详细,更冗长,并且包含更多的信息,比如引号、转义字符等。- 对于内置类型,
repr()
的输出通常是一个有效的Python表达式,如果可能的话,它应该能够重新创建原始对象。
示例
x = 10
print(str(x)) # 输出: '10'
print(repr(x)) # 输出: '10'
s = 'Hello, world!'
print(str(s)) # 输出: 'Hello, world!'
print(repr(s)) # 输出: "'Hello, world!'",注意字符串被单引号包围了
l = [1, 2, 3, 'four']
print(str(l)) # 输出: '[1, 2, 3, "four"]',注意字符串元素被双引号包围了(在某些Python版本中可能不同)
print(repr(l)) # 输出: '[1, 2, 3, \'four\']',更详细地表示了列表的内容,包括字符串元素中的转义字符
使用场景
- 当你需要一个适合人类阅读的字符串表示时,使用
str()
。 - 当你需要一个尽可能准确的、可能用于调试或重新创建对象的字符串表示时,使用
repr()
。
注意事项
- 对于自定义类,你可以通过重写
__str__()
和__repr__()
方法来控制str()
和repr()
的输出。 - 一般来说,
__str__()
应该返回一个易于阅读的字符串,而__repr__()
应该返回一个更详细、更准确的字符串,最好是一个有效的Python表达式。 - 如果只重写了
__str__()
而没有重写__repr__()
,那么当尝试使用repr()
时,Python会回退到使用__str__()
的输出(但会加上引号),这通常不是你所期望的。因此,最好同时重写这两个方法。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)