Python提供了构造不同对象的多个内置函数,使用这些函数可以方便地构造列表、元组、字典等对象。
下表列出了构造不同类型对象的内置函数。

构造整数对象
函数声明:
class int([x]) class int(x, base=10)
返回一个基于数字或字符串 x 构造的整数对象。[x]是可选参数,若没有参数传入,int()返回0。
如果 x 不是数字,或者有 base 参数,x 必须是字符串、bytes、表示进制为 base 的 整数值 的 bytearray 实例。X前可以有 + 或 - (中间不能有空格),前后可以有空格。
base参数是进制,默认是10,表示十进制,可以选择二进制(2)、八进制(8)、十六进制(16)等,2、8、16 进制的数字可以在代码中用 0b/0B 、 0o/0O 、 0x/0X 前缀来表示。
若传入了base参数,x必须是字符串,该字符串为表示进制为 base 的 整数值。
案例代码:
>>> num = int()
>>> print(num)
0
>>> # 传入字符串参数
>>> num = int("30")
>>> # 创建一个负数的整数对象
>>> num = int(-30)
>>> print(num)
-30
>>> num = int("0x1e",16)
>>> print(num)
30
>>>
构造字符串对象
函数声明:
class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')
object参数是object类型的对象。所有的类都继承于object类(关于类的继承,在后面的课程会讲到),序列类型、数字类型等都继承了object类。
object类提供了一个方法__str__(),该方法会返回object对象的字符串描述,如果object是字符串对象,该方法返回字符串本身。str函数调用传入object对象的__str__(),来返回object对象的字符串描述。
在第二个函数声明中,如果参数encoding 或 errors 均未给出,函数返回返回object对象的字符串描述。
如果 encoding 或 errors 至少给出其中之一,则 object 应该是一个bytes 或 bytearray对象。
案例代码:
>>> # 使用列表创建一个字符串对象
>>> s = str([10,20,30,19])
>>> print(s)
[10, 20, 30, 19]
>>> type(s)
<class 'str'>
>>> # 使用元组创建一个字符串对象
>>> t = ("python","java")
>>> s = str(t)
>>> print(s)
('python', 'java')
>>> type(s)
<class 'str'>
>>>
构造列表对象
class list([iterable])
参数iterable是可迭代对象,iterable是可选参数,若没有给出iterable,函数返回一个空的列表对象。
如果 iterable 已经是一个列表,将创建并返回其副本,类似于 iterable[:]。 例如,list('abc') 返回 ['a', 'b', 'c'] 而 list( (1, 2, 3) ) 返回 [1, 2, 3]。
案例代码:
>>> # 创建一个空列表
>>> a = list()
>>> print(a)
[]
>>> # 从可迭代对象中创建一个列表
>>> a = list("abcdef")
>>> print(a)
['a', 'b', 'c', 'd', 'e', 'f']
>>> # 从可迭代对象元组创建一个列表
>>> a = list((1,2,3,4,5,6))
>>> print(a)
[1, 2, 3, 4, 5, 6]
>>> # 从列表对象创建一个列表
>>> a = list(["java","Python"])
>>> print(a)
['java', 'Python']
>>>
构造元组对象
函数声明:
tuple([iterable])
参数iterable是可迭代对象,iterable是可选参数,若没有给出iterable,函数返回一个空的元组对象。
iterable 可以是序列、支持迭代的容器或其他可迭代对象。 如果 iterable 已经是一个元组,会不加改变地将其返回。 例如,tuple('abc') 返回 ('a', 'b', 'c') 而 tuple( [1, 2, 3] ) 返回 (1, 2, 3)。
案例代码:
>>> # 创建一个空的元组对象
>>> a = tuple()
>>> print(a)
()
>>> # 使用字符串创建一个元组对象
>>> a = tuple("abcdef")
>>> print(a)
('a', 'b', 'c', 'd', 'e', 'f')
>>> # 使用列表创建一个元组对象
>>> a = tuple([1,2,3,4,5,6])
>>> print(a)
(1, 2, 3, 4, 5, 6)
>>>
构造字典对象
函数声明:
class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
参数kwarg是可变参数,传入的参数会转为字典。
参数mapping是一个映射函数,如Python的内置函数zip、map。该映射函数将返回一个元组的迭代器,其中的第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素,函数会以该元组的迭代器创建字典对象。如果给出了**kwarg,则该参数的参数名称和值会附加到已创建的字典对象中。
参数iterable是一个可迭代对象,该可迭代对象中的每一项本身必须为一个刚好包含两个元素的可迭代对象。每一项中的第一个对象将成为新字典的一个键,第二个对象将成为其对应的值。如果一个键出现一次以上,该键的最后一个值将成为其在新字典中对应的值。如果给出了**kwarg,则该参数的参数名称和值会附加到已创建的字典对象中。
案例代码:
# 传入**kwarg参数创建字典对象
>>> dic = dict(one='1', two='2',three='3')
>>> print(dic)
{'one': '1', 'two': '2', 'three': '3'}
# 传入mapping 参数和**kwarg参数创建字典对象
>>> dic = dict(zip(['one', 'two', 'three'], [1, 2, 3]),four='4')
>>> print(dic)
{'one': 1, 'two': 2, 'three': 3, 'four': '4'}
# 传入iterable 参数和**kwarg参数创建字典对象
>>> d = dict([('two', 2), ('one', 1), ('three', 3)],four='4')
>>> print(d)
{'two': 2, 'one': 1, 'three': 3, 'four': '4'}
构造bytes对象
函数声明:
bytes([source[, encoding[, errors]]])
参数source、encoding、errors都是可选的。调用函数时,如果没有给出任何参数,函数会返回一个空的bytes对象。
source可以是字符串值,不过要在字符串值前面加一个前缀b。例如: b”Hello”、b‘Hello’、b'''Hello'''。
案例代码:
>>> s = bytes(b"Hello")
>>> print(s)
b'Hello'
>>> s = bytes(b'Hello')
>>> s = bytes(b'''Hello''')
source可以是一个整数,创建一个用零值填充的bytes对象。
案例代码:
>>> s = bytes(10)
>>> print(s)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>>
案例代码的\x表示后面的数字是十六进制。
source可以是一个使用range函数创建的整数序列,该整数序列应该在0至256范围内。
案例代码:
>>> s = bytes(range(20))
>>> print(s)
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13'
>>>
source可以是一个bytes对象,函数会复制现有的bytes对象。
案例代码:
>>> s = bytes(b'Hello')
>>> t = bytes(s)
>>> print(t)
b'Hello'
>>>
构造复数对象
函数声明:
class complex([real[, imag]])
该函数返回值为 real + imag*1j 的复数对象,或将字符串或数字转换为复数。
如果第一个形参real是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。第二个形参不能是字符串。每个实参都可以是任意的数值类型(包括复数)。如果省略了 imag,则默认值为零,构造函数会像 int 和 float 一样进行数值转换。如果两个实参都省略,则返回 0j。
案例代码:
>>> # 创建一个空的复数对象
>>> a = complex()
>>> print(a)
0j
>>> # 使用字符串创建一个复数对象
>>> a = complex("3+5j")
>>> print(a)
(3+5j)
>>> # 使用实数和虚数创建一个复数对象
>>> a = complex(3+1.2j)
>>> print(a)
(3+1.2j)
构造浮点数对象
函数声明:
class float([x])
返回一个基于数字或字符串 x 构造的浮点数对象。[x]是可选参数,若没有参数传入,float()返回0.0。
案例代码:
>>> # 创建一个值为0.0的浮点数对象
>>> num = float()
>>> print(num)
0.0
>>> # 创建一个值为负数的浮点数对象
>>> num = float("-3.01")
>>> print(num)
-3.01
>>> # 创建一个值为正数的浮点数对象
>>> num = float(3.01)
>>> print(num)
3.01
>>>
构造集合对象
函数声明:
class set([iterable])
class frozenset([iterable])
参数iterable是可迭代对象,创建的集合对象的元素来自于iterable,iterable的元素必须是hashable。若没有给出iterable,函数将返回一个空的集合对象。
案例代码:
>>> # 创建set对象
>>> s = set(["java","C++"])
>>> print(s)
{'java', 'C++'}
>>> # 创建frozenset对象
>>> f = frozenset(["java","C++"])
>>> print(f)
frozenset({'java', 'C++'})
构造集合对象
函数声明:
class object()
返回一个没有特征的新对象。object 是所有类的基类。它具有所有 Python 类实例的通用方法。这个函数不接受任何实参。
案例代码:
>>> obj = object()
>>> type(obj)
<class 'object'>
>>>