当前位置:   article > 正文

python 内置数据类型_python中用于存储数据集合的内置数据类型

python中用于存储数据集合的内置数据类型

python中内置数据类型包含:

数字类型(Number):整型(int)、浮点型(float)、复数(complex)和布尔型(bool)及长整型(long)
序列类型(Sequence):字符串(str)、列表(list)、元组(tuple)和字节序列(bytes)
映射类型(Mapping):字典(dict)
集合类型(Set):集合(set)和不可变集合(frozenset)
可调用类型(Callable):函数(function)、方法(method)和类(class)
迭代器类型(Iterator):生成器(generator)和生成器函数(generator function)及内置迭代器
上下文管理器类型(Context Manager):实现了 enter() 和 exit() 方法的对象
模块类型(Module):模块(module)和包(package)
类型类型/元类型(metaclass):类(class)和类型(type)
Null 对象类型(NoneType:只包括一个值 None,表示空对象

(1)数字类型(Number)

整型(int)

表示没有小数部分的数字。在Python中,整数可以表示任意大的数字,而不受计算机内存的限制

浮点型(float)

用于表示带小数点的数值。浮点型可以表示非常大或非常小的数,精度取决于所使用的位数。Python 3 中的浮点数精度为 53 位

浮点数的比较应该谨慎进行,因为由于浮点数的精度问题,可能会产生不准确的结果

复数(complex)

复数(complex)是由实数和虚数组成的数,形如 a + bi,其中 a 和 b 分别表示实数和虚数部分,i 表示虚数单位
在 Python 中,复数可以使用 complex(real, imag) 函数创建,其中 real 和 imag 分别表示实部和虚部。同时,也可以使用 a + bj 的形式表示复数,其中 a 和 b 分别表示实数和虚数部分,j 也表示虚数单位
复数的常用运算包括加减乘除以及求模、共轭等操作。可以使用 +、-、*、/ 分别表示复数的加、减、乘、除运算;使用 abs() 函数求取复数的模,使用 .conjugate() 方法求取复数的共轭

布尔型(bool)

用于表示真(True)和假(False)的数据类型。在 Python 中,True 和 False 都是关键字,它们分别代表布尔型的真和假

在 Python 中,被认为是“假”的值有:
False:布尔型的假值
None:表示缺少值或空对象
0:整型的零值
0.0:浮点型的零值
''、""、""" """:空字符串
[]:空列表
():空元组
{}:空字典

长整型(long)

在 Python 2 中,整数类型分为两种,即普通整数类型(int)和长整数类型(long)
普通整数类型的大小是固定的,通常是 32 位或 64 位。而长整数类型可以表示任意大小的整数,内存空间是动态分配的
在 Python 2 中,如果普通整数超出了范围,就会自动转换为长整数类型。而在 Python 3 中,只有一种整数类型,即 int,其大小可以动态调整,不再需要长整数类型

(2)序列类型(Sequence)

字符串(str)

用来表示文本数据的数据类型,由一系列 Unicode 字符构成,可以使用单引号(')或双引号(")来创建字符串对象

在 Python 中,字符串是不可变的,也就是说,一旦创建了字符串对象,就不能更改字符串的内容

在 Python 3.6之后还有一种称为 f-strings 的字符串格式化方法,它使用花括号({})来包含表达式,可以在字符串中插入变量或表达式的值

  1. name = "Alice"
  2. age = 30
  3. print(f"My name is {name} and I'm {age} years old.")

列表(list)

用于存储一组有序的数据。它可以存储任何类型的数据,包括整数、浮点数、字符串、布尔值等等。列表是可变的,这意味着可以对其进行添加、删除、修改等操作。在 Python 中,用方括号 [] 来表示一个列表

元组(tuple)

元组使用小括号 () 表示,元素之间使用逗号分隔

创建只包含一个元素的元组时,需要在元素后面加上逗号,否则会被解释为其他数据类型

元组与列表不同的是,元组是不可变的,因此在需要不可变序列的场合,如函数参数、字典键等,元组常常比列表更为合适

字节序列(bytes)

Python 3中新增的一种数据类型,用于表示二进制数据。与字符串不同,字节序列中的每个元素都是整数,取值范围为0~255

可以通过字面量或bytes()函数创建字节序列:

  1. # 通过字面量创建字节序列
  2. b = b'hello world'
  3. # 通过bytes()函数创建字节序列
  4. b = bytes([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100])

字节序列与字符串相似,可以进行一些基本的操作,如索引、切片、遍历等。但是,由于字节序列中的元素是整数,因此它们不支持字符串中的一些操作,如replace()、split()等

字节序列与字符串之间可以通过encode()和decode()方法进行相互转换。encode()方法将字符串转换为字节序列,而decode()方法将字节序列转换为字符串

需要注意的是,字节序列与字符串之间的转换需要指定相应的编码方式

  1. s = 'hello world'
  2. b = s.encode('utf-8') # 将字符串转换为字节序列
  3. s1 = b.decode('utf-8') # 将字节序列转换为字符串

(3)映射类型(Mapping)

字典(dict)

一种键值对(key-value pairs)的无序容器。字典中的每个元素都由一个键和一个值组成,它们通过冒号(:)分隔。字典中的键必须是不可变的,例如整数、浮点数、字符串、元组等,而值可以是任意类型的对象

(4)集合类型(Set)

集合(set)

一种无序、不重复元素的集合数据类型,它支持集合运算,例如交集、并集、差集等。Python中的集合类型可以通过内置函数set()来创建,也可以使用花括号{}包含元素列表的方式创建

Python中的集合类型支持集合运算,包括并集(|)、交集(&)、差集(-)等操作

集合运算是指针对集合进行的一系列操作,包括交集、并集、差集和对称差集等。这些运算可以用于处理集合数据,进行集合的筛选、聚合等操作。
以下是常见的集合运算:
交集(intersection):返回两个集合中共有的元素,使用 & 符号或者 intersection 方法实现。
并集(union):返回两个集合中所有元素的集合,使用 | 符号或者 union 方法实现。
差集(difference):返回第一个集合中有而第二个集合中没有的元素的集合,使用 - 符号或者 difference 方法实现。
对称差集(symmetric difference):返回两个集合中不共有的元素的集合,使用 ^ 符号或者 symmetric_difference 方法实现。
另外,还有一些其他的集合运算,比如判断是否是子集(issubset)、判断是否是超集(issuperset)等。这些运算可以通过调用相应的方法实现

不可变集合(frozenset)

一种不可变的集合类型,和集合(set)相似,但是一旦创建就无法更改。这意味着不能向不可变集合中添加或删除元素,因此它比可变集合更加安全。不可变集合是用 frozenset() 函数来创建的,它接受一个可迭代对象作为参数,并返回一个新的不可变集合对象
不可变集合的主要应用是作为字典的键,因为字典的键必须是不可变的对象。此外,它们还可以用于比较两个集合是否相等,因为不可变集合是可哈希的(hashable),可以作为字典的键和集合的元素

(5)可调用类型(Callable)

可调用类型(Callable)是 Python 中的一个抽象概念,表示可调用的对象,即可以像函数一样调用的对象

判断一个对象是否是可调用类型,可以使用内置函数 callable()

分别定义了一个函数、一个方法和一个类,并且都可以像函数一样进行调用:

  1. # 定义一个函数
  2. def add(a, b):
  3. return a + b
  4. # 定义一个类,其中定义了一个 __call__ 方法
  5. class Multiply:
  6. def __call__(self, a, b):
  7. return a * b
  8. # 定义一个带有 __call__ 方法的类,并创建其实例
  9. class Divide:
  10. def __call__(self, a, b):
  11. return a / b
  12. divide = Divide()
  13. # 判断这三个对象是否是可调用类型
  14. print(callable(add)) # True
  15. print(callable(Multiply)) # True
  16. print(callable(divide)) # True

函数是一段可执行的代码块,可以通过函数名来调用。函数可以带有参数,并可以返回一个值。
方法是指与一个对象相关联的函数,可以通过对象名和方法名来调用。例如,一个字符串对象可以调用upper()方法来将其转换为大写。方法的调用通常是通过点.操作符实现的,这个点操作符可以理解为“属于”这个对象。方法的第一个参数通常是self,指代调用该方法的对象本身

(6)迭代器类型(Iterator)

生成器(generator)和生成器函数(generator function)

迭代器类型,可以按需生成一系列值

生成器函数是指返回生成器的函数,通常使用 yield 关键字来产生值

生成器函数在调用时并不会执行函数体,而是返回一个生成器对象,每次迭代时会自动执行生成器函数,并在 yield 处生成一个值,直到函数执行结束或遇到 return 语句

  1. def count_up_to(n):
  2. i = 1
  3. while i <= n:
  4. yield i
  5. i += 1
  6. # 使用生成器函数创建生成器
  7. counter = count_up_to(5)
  8. # 迭代生成器输出值
  9. for num in counter:
  10. print(num)

上面的代码定义了一个 count_up_to 函数,该函数使用 yield 语句返回生成器。在主程序中,通过调用 count_up_to 函数创建一个生成器对象 counter,然后使用 for 循环语句迭代该生成器输出值

生成器可以优化内存使用,因为它只在需要时生成数据,而不是一次性生成整个序列。它也可以用于处理无限序列,因为它可以在需要时生成无限的值序列,而不会导致内存溢出

以下是一个无限序列的生成器函数:

  1. def fibonacci():
  2. a, b = 0, 1
  3. while True:
  4. yield a
  5. a, b = b, a + b
  6. # 创建生成器
  7. fib = fibonacci()
  8. # 迭代生成器并输出前10个数
  9. for i in range(10):
  10. print(next(fib))

上面的代码中,定义了一个 fibonacci 生成器函数,它使用 yield 语句产生斐波那契数列的值。在主程序中,通过调用 fibonacci 函数创建一个生成器对象 fib,然后使用 for 循环语句迭代该生成器并输出前10个值。
需要注意的是,生成器只能被迭代一次。如果需要再次迭代,必须重新创建一个新的生成器对象。此外,生成器也可以作为参数传递给其他函数或方法,或使用类似列表解析的方式进行过滤或映射操作

内置迭代器

Python 内置的迭代器类型包括:
list_iterator:用于迭代列表
tuple_iterator:用于迭代元组
str_iterator:用于迭代字符串
set_iterator:用于迭代集合
dict_keyiterator:用于迭代字典的键
dict_valueiterator:用于迭代字典的值
dict_itemiterator:用于迭代字典的键值对
range_iterator:用于迭代范围内的整数
zip_iterator:用于迭代多个序列的并行元素
map_iterator:用于迭代通过函数映射后的元素
filter_iterator:用于迭代通过函数过滤后的元素
enumerate_iterator:用于迭代序列中的元素及其索引

(7)上下文管理器类型(Context Manager)

上下文管理器类型(Context Manager)是一种可管理资源的对象,它可以定义一些操作在进入和退出上下文时执行。上下文管理器可以使用with语句来自动地获取和释放资源,使代码更加简洁、可读性更好、更加健壮。
在 Python 中,with语句通常用于处理文件操作、线程锁、网络连接等需要手动管理资源的场景。通过使用上下文管理器,我们可以在with语句中执行相关操作,并确保在离开with语句块后,相关资源得到正确释放,从而避免资源泄漏和其他潜在的错误。常见的内置上下文管理器类型包括file对象、threading.Lock对象、socket.socket对象等。同时,我们也可以通过@contextmanager装饰器来定义自己的上下文管理器。
在上下文管理器中,通常需要实现__enter__()和__exit__()方法。其中,__enter__()方法用于获取资源或执行相关操作,__exit__()方法则用于释放资源或执行清理操作。当with语句块执行结束时,__exit__()方法会自动被调用,即使在with块内部发生了异常,也会确保资源得到释放。
下面是一个使用内置的file上下文管理器打开文件的例子:

  1. with open("file.txt", "r") as f:
  2. data = f.read()
  3. # 在with块中对文件进行读取和处理
  4. # 在with块结束后,文件会自动关闭

这里open()函数返回的file对象就是一个上下文管理器,当我们使用with语句打开文件并进行相关操作时,__enter__()方法会被自动调用,返回file对象本身,而__exit__()方法则会在with块结束后自动调用,关闭文件并释放相关资源

(8)模块类型(Module)

模块(module)和包(package)

模块类型(Module)是指由Python代码编写的一个文件,其中包含了变量、函数、类等各种对象的定义。在Python中,每一个.py文件都可以看作是一个模块,它可以被其他的程序导入并使用其中定义的对象

包(package)则是一个包含了多个模块或子包的特殊目录,其中还包含一个名为 __init__.py 的文件,用于标识这个目录是一个包

(9)类型类型/元类型(metaclass)

类(class)和类型(type)

类型类型(Type)是Python中内置的一种类型,用于表示其他类型的类型。每个对象都属于某种类型,而这个类型本身也是一个对象,也有它自己的类型。因此,类型类型就是用来表示其他类型的类型对象

在Python中,可以使用type()函数来获取一个对象的类型,也可以使用type()函数来动态地创建新的类型,因此,type()函数是一个非常重要的函数。通过type()函数可以动态地创建新的类、对象等等,从而实现更加灵活的编程
类类型指的是用class关键字定义的类。在Python中,类也是一种对象,它们可以有自己的属性和方法。类类型是一种元类,可以用来创建类对象。类对象又可以创建实例对象。类的定义包括类名、类属性和类方法等。类属性是类的数据成员,而类方法是类的函数成员。类可以继承自其他类,从而继承其属性和方法。
元类型(metaclass)是一种用于创建类的类,它可以控制类的创建过程,包括类的属性和方法等。在Python中,所有的类都是由一个元类型来创建的,默认的元类型是type。元类型可以用来控制类的继承关系、方法重载、属性访问等,是高级面向对象编程的重要概念之一

(10)Null 对象类型(NoneType)

只包括一个值 None,表示空对象

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/171972?site
推荐阅读
相关标签
  

闽ICP备14008679号