python中的print()、str()和repr()的区别

1. print()函数

在Python中,print()函数是用来将数据输出到控制台或者文件中的一个常用函数。我们可以将需要打印的数据作为参数传递给print()函数,并且可以使用不同的参数来控制输出的格式。

例如,我们可以直接打印一个字符串:

print("Hello, World!")

输出结果为:

Hello, World!

我们也可以打印一个变量的值:

name = "Alice"

print(name)

输出结果为:

Alice

需要注意的是,print()函数默认使用空格作为分隔符,并且在最后会换行。

2. str()函数

str()函数是Python中的一个内置函数,用来将对象转换为字符串。我们可以将一个数字、列表、元组等对象传递给str()函数,它会返回一个对应的字符串表示。

例如,我们可以将一个整数转换为字符串:

num = 10

num_str = str(num)

print(num_str)

输出结果为:

10

需要注意的是,str()函数只能转换含有可打印字符的对象。如果对象中含有非可打印字符,比如字节码,str()函数会抛出一个UnicodeEncodeError错误。

3. repr()函数

repr()函数也是Python中的一个内置函数,用来将对象转换为解释器可执行的字符串形式。它的返回值通常是带有引号的字符串,可以直接通过eval()函数重新生成原始对象。

例如,我们可以将一个列表转换为字符串:

lst = [1, 2, 3]

lst_str = repr(lst)

print(lst_str)

输出结果为:

[1, 2, 3]

需要注意的是,repr()函数的返回值通常包含更多的信息,比如类型信息、转义字符等,可以更准确地表示原始对象。

4. 区别比较

print()函数、str()函数和repr()函数都可以将对象转换为字符串形式,但它们之间存在一些区别:

4.1 打印效果不同

print()函数的主要作用是将数据输出到控制台或者文件中,它会自动添加分隔符和换行符。str()函数和repr()函数则是将对象转换为字符串,不会添加额外的分隔符和换行符。

4.2 返回值类型不同

print()函数不返回任何值,它只是将数据打印到输出设备中。str()函数和repr()函数则返回一个字符串,可以保存到变量中或者进行其他操作。

4.3 表达方式不同

str()函数返回的字符串通常是针对用户友好的,它主要用来显示给用户看。而repr()函数返回的字符串通常是针对开发者的,它主要用来保留对象的完整信息,方便调试和重建原始对象。

在Python中,我们可以通过调用repr()函数的eval()函数来重新生成原始对象。这个特性在调试阶段非常有用。

4.4 默认情况下的区别

在默认情况下,print()函数会调用str()函数来将对象转换为字符串,然后将其打印到输出设备中。因此,我们可以将print()函数看作是str()函数的一种快捷方式。

而repr()函数则通常会直接调用对象的\_\_repr\_\_()方法来返回字符串形式,这种字符串通常是唯一的,并且可以通过eval()函数重新生成原始对象。

需要注意的是,不是所有的对象都实现了\_\_repr\_\_()方法,这时repr()函数会调用\_\_str\_\_()方法来代替。如果对象同时都没实现,repr()函数会返回一个默认的字符串表示。

综上所述,print()函数主要用来打印数据到控制台,str()函数用来将对象转换为用户友好的字符串表示,而repr()函数主要用来保留对象的完整信息,方便调试和重建原始对象。

后端开发标签