📜  Python中的str()vs repr()(1)

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

Python中的str() vs repr()

在 Python 中,str()repr() 是两个用来转换对象为字符串的函数,它们经常会被混淆和误解。本文将介绍它们的区别和适用场景。

str()

str() 是一个内置函数,用来返回对象的可读性好的字符串表示。它的作用是将任意一个对象转换为字符串类型,并返回一个字符串。例如:

x = 10
print(str(x))  # "10"

y = [1, 2, 3]
print(str(y))  # "[1, 2, 3]"

当你需要在用户界面中显示一些对象时,通常使用 str() 函数,因为它返回的字符串更具有可读性。

repr()

repr() 是另一个内置函数,用来返回一个对象的“官方”字符串表示。它的作用是将任意对象转换为一个可以用来表示对象的字符串,并返回一个字符串。例如:

x = 10
print(repr(x))  # "10"

y = [1, 2, 3]
print(repr(y))  # "[1, 2, 3]"

str() 不同的是,repr() 返回的字符串通常是一个程序员可以使用的有效的表达式。这个表达式可以被解释器解释和执行,从而创建和原始对象同样的结果。

区别

以上面的例子来看,两个函数输出的结果相同,但是这并不意味着它们没有区别。我们来看一下另一个例子:

x = 'hello, world!'
print(str(x))  # "hello, world!"
print(repr(x)) # "'hello, world!'"

从输出结果来看,str() 函数是返回了一个可读性好的字符串,而 repr() 函数则是返回了一个包含引号的字符串,这是 Python 中表示字符串的方式之一。

另外一个例子:

x = 10 + 20
print(str(x))  # "30"
print(repr(x)) # "30"

从输出结果来看,两个函数输出的结果是一样的。但是,当我们打印一个列表的时候,它们的输出结果就不同了:

x = [1, 2, 3]
print(str(x))  # "[1, 2, 3]"
print(repr(x)) # "[1, 2, 3]"

也就是说,如果你使用 str() 函数,你将得到一个人类可读的字符串,如果你使用 repr() 函数,你将得到一个可以被 Python 解释器解释的字符串。

结论
  • 如果要在用户界面中显示某个对象,通常使用 str() 函数。
  • 如果要输出某个对象的“逻辑”形式,即可被 Python 解释器解释的形式,通常使用 repr() 函数。