📜  python repr vs str - Python (1)

📅  最后修改于: 2023-12-03 15:04:08.206000             🧑  作者: Mango

Python中的repr与str

在Python中,有两种常用的字符串表示形式:reprstr。它们都可以用来将一个Python对象转换为字符串,但是它们有不同的用途和输出形式。

repr

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

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