Python str() 函数

Python str() 语法

str() 是 Python 的一个内置函数,它用于返回给定对象的字符串表示形式。换句话来说,str() 函数可以将其他类型(如 int、float、bytes 等)转换为字符串类型。

语法:

str(object='', encoding='utf-8', errors='strict')

说明:

str() 函数接收以下 3 个参数。

  • object(可选):是任意对象(Python 一切皆对象)。如果未提供 object,则返回空字符串。
  • encoding(可选,默认值:'utf-8'):解码类型(仅用于 bytes/bytearray),比如 'utf-8'、'ascii' 等。
  • errors(可选,默认值'strict'):解码失败时的响应,共有 6 种:'strict'、'ignore'、'replace'、'xmlcharrefreplace'、'namereplace'、'backslashreplace',默认为 'strict'。

对于 str() 函数,小伙伴们要清楚以下几点。

  • 如果对象已经是字符串类型,则 str() 会返回对象本身(同一对象,id() 相同)。
  • 如果对象是非字符串类型,则 str() 会调用对象的 __str__() 方法来进行转换。大多数内置类型(如数字、列表、字典等)都有合理的 __str__() 实现。
  • 如果对象没有定义 __str__() 方法,则 str() 会回退使用 __repr__() 的结果(如果定义了的话)。如果还是没有定义 __repr__(),则会使用默认的 <__main__.MyClass object at 0x...> 形式。

注意: encoding 和 errors 这两个参数仅在 bytesbytearray 中使用,其他类型传入这两个参数会引发 TypeError 异常。

Python str() 摘要

使用频率
官方文档 查看

Python str() 示例

接下来,我们通过几个简单的例子来讲解一下 Python str() 函数是如何使用的。

示例 1:str() 创建字符串

s = str('绿叶网')
print(s)
print(type(s))

运行结果如下。

绿叶网
<class 'str'>

分析:

下面两种方式是等价的,实际开发更推荐使用方式 2。

# 方式 1
s = str('绿叶网')

# 方式 2
s = '绿叶网'

示例 2:str() 将数字转换为字符串

s1 = str(666)
s2 = str(3.14)

print(type(s1))
print(type(s2))

运行结果如下。

<class 'str'>
<class 'str'>

示例 3:str() 将布尔值转换为字符串

result1 = str(True)
print(result1)

result2 = str(False)
print(result2)

运行结果如下。

True
False

示例 4:str() 将序列转换为字符串

colors = ['red', 'green', 'blue']
print(str(colors))    # "['red', 'green', 'blue']"

nums = [1, 2, 3]
print(str(nums))      # '[1, 2, 3]'

运行结果如下。

['red', 'green', 'blue']
[1, 2, 3]

示例 5:str() 将 bytes 类型转换为字符串

b = bytes('lvyenet', encoding='utf-8')  # 编码为 bytes
s = str(b, encoding='utf-8')             # 解码为字符串
print(s)
print(type(s))

运行结果如下。

lvyenet
<class 'str'>

示例 6:str() 参数是特殊值

print(str(None))
print(str(1+2j))

运行结果如下。

None
(1+2j)

示例 7:str() 将自定义对象转换为字符串

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'{self.name} ({self.age})'

p = Person('Jack', 20)
print(str(p))

运行结果如下。

Jack (20)

str() 与 repr() 的区别

str() 和 repr() 这两个函数都可以用于获取某个对象的字符串表示形式,虽然咋一看它们很相似,但它们之间还是有一定区别。

  • str():获取对象的字符串形式,对用户友好。
  • repr():获取对象的字符串形式,对机器(Python)友好。

在实际开发中,大多数情况下我们使用的都是 str(),而 repr() 比较少用到。

示例 8:str() vs repr()

s = 'Hello lvye'
print(str(s))
print(repr(s))

运行结果如下。

Hello lvye
'Hello lvye'

str() 最佳实践

如果想要创建一个字符串,我们应该优先使用字面量方式,而不是使用 str() 函数。

# 推荐
s = '绿叶网'

# 非必要不使用
s = str('绿叶网')

上一篇: bool()

下一篇: list()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号