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...> 形式。
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('绿叶网')