赞
踩
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,表示空对象 |
整型(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,其大小可以动态调整,不再需要长整数类型
字符串(str)
用来表示文本数据的数据类型,由一系列 Unicode 字符构成,可以使用单引号(')或双引号(")来创建字符串对象
在 Python 中,字符串是不可变的,也就是说,一旦创建了字符串对象,就不能更改字符串的内容
在 Python 3.6之后还有一种称为 f-strings 的字符串格式化方法,它使用花括号({})来包含表达式,可以在字符串中插入变量或表达式的值
- name = "Alice"
- age = 30
- print(f"My name is {name} and I'm {age} years old.")
列表(list)
用于存储一组有序的数据。它可以存储任何类型的数据,包括整数、浮点数、字符串、布尔值等等。列表是可变的,这意味着可以对其进行添加、删除、修改等操作。在 Python 中,用方括号 [] 来表示一个列表
元组(tuple)
元组使用小括号 () 表示,元素之间使用逗号分隔
创建只包含一个元素的元组时,需要在元素后面加上逗号,否则会被解释为其他数据类型
元组与列表不同的是,元组是不可变的,因此在需要不可变序列的场合,如函数参数、字典键等,元组常常比列表更为合适
字节序列(bytes)
Python 3中新增的一种数据类型,用于表示二进制数据。与字符串不同,字节序列中的每个元素都是整数,取值范围为0~255
可以通过字面量或bytes()函数创建字节序列:
- # 通过字面量创建字节序列
- b = b'hello world'
- # 通过bytes()函数创建字节序列
- b = bytes([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100])
字节序列与字符串相似,可以进行一些基本的操作,如索引、切片、遍历等。但是,由于字节序列中的元素是整数,因此它们不支持字符串中的一些操作,如replace()、split()等
字节序列与字符串之间可以通过encode()和decode()方法进行相互转换。encode()方法将字符串转换为字节序列,而decode()方法将字节序列转换为字符串
需要注意的是,字节序列与字符串之间的转换需要指定相应的编码方式
- s = 'hello world'
- b = s.encode('utf-8') # 将字符串转换为字节序列
- s1 = b.decode('utf-8') # 将字节序列转换为字符串
字典(dict)
一种键值对(key-value pairs)的无序容器。字典中的每个元素都由一个键和一个值组成,它们通过冒号(:)分隔。字典中的键必须是不可变的,例如整数、浮点数、字符串、元组等,而值可以是任意类型的对象
集合(set)
一种无序、不重复元素的集合数据类型,它支持集合运算,例如交集、并集、差集等。Python中的集合类型可以通过内置函数set()来创建,也可以使用花括号{}包含元素列表的方式创建
Python中的集合类型支持集合运算,包括并集(|)、交集(&)、差集(-)等操作
集合运算是指针对集合进行的一系列操作,包括交集、并集、差集和对称差集等。这些运算可以用于处理集合数据,进行集合的筛选、聚合等操作。
以下是常见的集合运算:
交集(intersection):返回两个集合中共有的元素,使用 & 符号或者 intersection 方法实现。
并集(union):返回两个集合中所有元素的集合,使用 | 符号或者 union 方法实现。
差集(difference):返回第一个集合中有而第二个集合中没有的元素的集合,使用 - 符号或者 difference 方法实现。
对称差集(symmetric difference):返回两个集合中不共有的元素的集合,使用 ^ 符号或者 symmetric_difference 方法实现。
另外,还有一些其他的集合运算,比如判断是否是子集(issubset)、判断是否是超集(issuperset)等。这些运算可以通过调用相应的方法实现
不可变集合(frozenset)
一种不可变的集合类型,和集合(set)相似,但是一旦创建就无法更改。这意味着不能向不可变集合中添加或删除元素,因此它比可变集合更加安全。不可变集合是用 frozenset() 函数来创建的,它接受一个可迭代对象作为参数,并返回一个新的不可变集合对象
不可变集合的主要应用是作为字典的键,因为字典的键必须是不可变的对象。此外,它们还可以用于比较两个集合是否相等,因为不可变集合是可哈希的(hashable),可以作为字典的键和集合的元素
可调用类型(Callable)是 Python 中的一个抽象概念,表示可调用的对象,即可以像函数一样调用的对象
判断一个对象是否是可调用类型,可以使用内置函数 callable()
分别定义了一个函数、一个方法和一个类,并且都可以像函数一样进行调用:
- # 定义一个函数
- def add(a, b):
- return a + b
-
- # 定义一个类,其中定义了一个 __call__ 方法
- class Multiply:
- def __call__(self, a, b):
- return a * b
-
- # 定义一个带有 __call__ 方法的类,并创建其实例
- class Divide:
- def __call__(self, a, b):
- return a / b
-
- divide = Divide()
-
- # 判断这三个对象是否是可调用类型
- print(callable(add)) # True
- print(callable(Multiply)) # True
- print(callable(divide)) # True
函数是一段可执行的代码块,可以通过函数名来调用。函数可以带有参数,并可以返回一个值。
方法是指与一个对象相关联的函数,可以通过对象名和方法名来调用。例如,一个字符串对象可以调用upper()方法来将其转换为大写。方法的调用通常是通过点.操作符实现的,这个点操作符可以理解为“属于”这个对象。方法的第一个参数通常是self,指代调用该方法的对象本身
生成器(generator)和生成器函数(generator function)
迭代器类型,可以按需生成一系列值
生成器函数是指返回生成器的函数,通常使用 yield 关键字来产生值
生成器函数在调用时并不会执行函数体,而是返回一个生成器对象,每次迭代时会自动执行生成器函数,并在 yield 处生成一个值,直到函数执行结束或遇到 return 语句
- def count_up_to(n):
- i = 1
- while i <= n:
- yield i
- i += 1
-
- # 使用生成器函数创建生成器
- counter = count_up_to(5)
-
- # 迭代生成器输出值
- for num in counter:
- print(num)
上面的代码定义了一个 count_up_to 函数,该函数使用 yield 语句返回生成器。在主程序中,通过调用 count_up_to 函数创建一个生成器对象 counter,然后使用 for 循环语句迭代该生成器输出值
生成器可以优化内存使用,因为它只在需要时生成数据,而不是一次性生成整个序列。它也可以用于处理无限序列,因为它可以在需要时生成无限的值序列,而不会导致内存溢出
以下是一个无限序列的生成器函数:
- def fibonacci():
- a, b = 0, 1
- while True:
- yield a
- a, b = b, a + b
-
- # 创建生成器
- fib = fibonacci()
-
- # 迭代生成器并输出前10个数
- for i in range(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:用于迭代序列中的元素及其索引
上下文管理器类型(Context Manager)是一种可管理资源的对象,它可以定义一些操作在进入和退出上下文时执行。上下文管理器可以使用with语句来自动地获取和释放资源,使代码更加简洁、可读性更好、更加健壮。
在 Python 中,with语句通常用于处理文件操作、线程锁、网络连接等需要手动管理资源的场景。通过使用上下文管理器,我们可以在with语句中执行相关操作,并确保在离开with语句块后,相关资源得到正确释放,从而避免资源泄漏和其他潜在的错误。常见的内置上下文管理器类型包括file对象、threading.Lock对象、socket.socket对象等。同时,我们也可以通过@contextmanager装饰器来定义自己的上下文管理器。
在上下文管理器中,通常需要实现__enter__()和__exit__()方法。其中,__enter__()方法用于获取资源或执行相关操作,__exit__()方法则用于释放资源或执行清理操作。当with语句块执行结束时,__exit__()方法会自动被调用,即使在with块内部发生了异常,也会确保资源得到释放。
下面是一个使用内置的file上下文管理器打开文件的例子:
- with open("file.txt", "r") as f:
- data = f.read()
- # 在with块中对文件进行读取和处理
-
- # 在with块结束后,文件会自动关闭
这里open()函数返回的file对象就是一个上下文管理器,当我们使用with语句打开文件并进行相关操作时,__enter__()方法会被自动调用,返回file对象本身,而__exit__()方法则会在with块结束后自动调用,关闭文件并释放相关资源
模块(module)和包(package)
模块类型(Module)是指由Python代码编写的一个文件,其中包含了变量、函数、类等各种对象的定义。在Python中,每一个.py文件都可以看作是一个模块,它可以被其他的程序导入并使用其中定义的对象
包(package)则是一个包含了多个模块或子包的特殊目录,其中还包含一个名为 __init__.py 的文件,用于标识这个目录是一个包
类(class)和类型(type)
类型类型(Type)是Python中内置的一种类型,用于表示其他类型的类型。每个对象都属于某种类型,而这个类型本身也是一个对象,也有它自己的类型。因此,类型类型就是用来表示其他类型的类型对象
在Python中,可以使用type()函数来获取一个对象的类型,也可以使用type()函数来动态地创建新的类型,因此,type()函数是一个非常重要的函数。通过type()函数可以动态地创建新的类、对象等等,从而实现更加灵活的编程
类类型指的是用class关键字定义的类。在Python中,类也是一种对象,它们可以有自己的属性和方法。类类型是一种元类,可以用来创建类对象。类对象又可以创建实例对象。类的定义包括类名、类属性和类方法等。类属性是类的数据成员,而类方法是类的函数成员。类可以继承自其他类,从而继承其属性和方法。
元类型(metaclass)是一种用于创建类的类,它可以控制类的创建过程,包括类的属性和方法等。在Python中,所有的类都是由一个元类型来创建的,默认的元类型是type。元类型可以用来控制类的继承关系、方法重载、属性访问等,是高级面向对象编程的重要概念之一
只包括一个值 None,表示空对象
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。