一、python已知的数据类型
1、标准数据类型
(1)Python3 中有六个标准的数据类型:
- Number(数字),判断标志: int、float、bool、complex
- String(字符串),判断标志: str
- List(列表),判断标志: list
- Tuple(元组),判断标志: tuple
- Set(集合),判断标志: set
- Dictionary(字典),判断标志: dict
(2)在Python3 的这六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
2、其他数据类型
- range,判断标志: range
- frozenset,判断标志: frozenset
- bytes ,判断标志: bytes
- bytearray ,判断标志: bytearray
- memoryvie , 判断标志: memoryview
二、判断标志的使用
1、直接判断数据类型
(1)运行代码:
isinstance(5, int)
isinstance(5.5, float)
isinstance(False, bool)
isinstance(1+2j, complex)
isinstance("str", str)
isinstance([1,2,3,4,5], list)
isinstance((1,2,3,4,5), tuple)
isinstance({1,2,3,4,5}, set)
isinstance({"1":1}, dict)
isinstance(range(5), range)
isinstance(frozenset({1,2,3,4,5}), frozenset)
isinstance(b"bit", bytes)
isinstance(bytearray(5), bytearray)
isinstance(memoryview(bytes(5)), memoryview)
(2)运行结果:
isinstance(5, int)
True
isinstance(5.5, float)
True
isinstance(False, bool)
True
isinstance(1+2j, complex)
True
isinstance("str", str)
True
isinstance([1,2,3,4,5], list)
True
isinstance((1,2,3,4,5), tuple)
True
isinstance({1,2,3,4,5}, set)
True
isinstance({"1":1}, dict)
True
isinstance(range(5), range)
True
isinstance(frozenset({1,2,3,4,5}), frozenset)
True
isinstance(b"bit", bytes)
True
isinstance(bytearray(5), bytearray)
True
isinstance(memoryview(bytes(5)), memoryview)
True
2、传参时的使用
(1)样式一:形参不赋值
def demo(name_int: int,
name_float: float,
name_bool: bool,
name_complex: complex,
name_str: str,
name_list: list,
name_tuple: tuple,
name_set: set,
name_dict: dict,
name_range: range,
name_frozenset: frozenset,
name_bytes: bytes,
name_bytearray: bytearray,
name_memoryview: memoryview):
pass
demo(name_int=1,
name_float=2,
name_bool=3,
name_complex=4,
name_str=5,
name_list=6,
name_tuple=7,
name_set=8,
name_dict=9,
name_range=10,
name_frozenset=11,
name_bytes=12,
name_bytearray=13,
name_memoryview=14)
(2)样式二:传参赋值
备注:引号可加可不加,如果随便写其他字符串,数据类型将是Any,如果后面赋值,将以值的类型为准。
def demo(name_int: "int"=5,
name_float: "float"=5,
name_bool: "bool"=False,
name_complex: "complex"=1+2j,
name_str: "str"="str",
name_list: "list"=[1,2,3,4,5],
name_tuple: "tuple"=(1,2,3,4,5),
name_set: "set"={1,2,3,4,5},
name_dict: "dict"={"1":1},
name_range: "range"=range(5),
name_frozenset: "frozenset"=frozenset({1,2,3,4,5}),
name_bytes: "bytes"=b"bit",
name_bytearray: "bytearray"=bytearray(5),
name_memoryview: "memoryview"=memoryview(bytes(5))):
print(name_memoryview)
print(name_bytearray)
print(name_bytes)
print(name_frozenset)
print(name_range)
print(name_dict)
print(name_set)
print(name_tuple)
print(name_list)
print(name_str)
print(name_complex)
print(name_bool)
print(name_float)
print(name_int)
demo()
(3)样式三:函数返回类型
def nice(num:int) -> int:
print(num)
return num
print(nice(100))
如上述函数,num:int提示传入整形,而-> int 提示返回整形。
三、数据类型的区别
1、frozenset 与 set 的区别
都是字典,不过,set无序排序且不重复,是可变的,有add()、remove()等方法,而frozenset是不可变的。
set({1,2,3,4,5}) # {1,2,3,4,5}
frozenset({1, 2, 3, 4, 5}) # frozenset({1, 2, 3, 4, 5})
2、bytes 与 bytearray 的区别
都是字节,不过,bytes是不可变序列,bytearray是可变序列,可以原处修改字节。
bytearray(5) # bytearray(b'x00x00x00x00x00')
bytes(5) # b'x00x00x00x00x00'
3、list 与 range 的区别
list是列表,可包含各种数据类型,而range对象返回的是一系列连续增加的整数,是特殊的列表。
4、memoryview的介绍
memoryview() 函数返回给定参数的内存查看对象(memory view)。所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
>>>v = memoryview(bytearray("abcefg", 'utf-8'))
>>> print(v[1])
98
>>> print(v[-1])
103
>>> print(v[1:4])
<memory at 0x10f543a08>
>>> print(v[1:4].tobytes())
b'bce'
>>>