📅  最后修改于: 2023-12-03 15:04:08.206000             🧑  作者: Mango
在Python中,有两种常用的字符串表示形式:repr
和str
。它们都可以用来将一个Python对象转换为字符串,但是它们有不同的用途和输出形式。
repr
函数可以将一个对象转换为一个字符串表示,这个字符串可以被用来重新创建这个对象。通常情况下,repr
的输出应该是一个Python表达式。例如:
>>> a = [1, 2, 3]
>>> repr(a)
'[1, 2, 3]'
>>> b = "hello"
>>> repr(b)
"'hello'"
>>> c = 5
>>> repr(c)
'5'
从上面的例子可以看到,列表和字符串的repr
输出都是Python表达式,而数字则是字面值。
在Python的交互式命令行中,输入一个对象并回车,调用的就是repr
函数。
>>> [1, 2, 3]
[1, 2, 3]
>>> "hello"
'hello'
>>> 5
5
str
函数用来将一个对象转换为一个可读的字符串形式,通常用于显示给用户。例如:
>>> a = [1, 2, 3]
>>> str(a)
'[1, 2, 3]'
>>> b = "hello"
>>> str(b)
'hello'
>>> c = 5
>>> str(c)
'5'
从这个例子可以看出,str
的输出跟repr
的输出是一样的,不过它们的输出用途是不同的。
在Python的交互式命令行中,可以使用print
函数来输出一个对象的字符串形式。
>>> print([1, 2, 3])
[1, 2, 3]
>>> print("hello")
hello
>>> print(5)
5
总的来说,repr
输出的是一个Python表达式,可以被Python解释器所理解,所以可以被用来重建一个对象。而str
输出的则是一个可读的字符串形式,可以被人所理解。
下面的例子可以更好地说明这两者之间的区别:
>>> import datetime
>>> today = datetime.date.today()
>>> str(today)
'2022-05-29'
>>> repr(today)
'datetime.date(2022, 5, 29)'
从上面的例子可以看到,str(today)
输出的是一个可读的日期字符串,但是如果要重建这个日期对象,就需要使用eval(str(today))
这种方式,而repr(today)
输出的是一个Python表达式,可以直接使用eval
函数来重建日期对象。
一句话总结,repr
的输出可以被解释器所重建,而str
的输出仅仅是一种表示形式,只是为了让人看懂而已。当输出给人看的时候,使用str
即可;当需要重建对象时,使用repr
。