一、常用内置类型(Built - in Types)
Python 拥有多种内置数据类型,这些类型满足了各种编程需求,从简单的数据存储到复杂的数据结构表示。
1. 数值类型(Numeric Types)
整数(int) :整数在 Python 中可以表示任意大小的整数值,不受特定字节数的限制。例如,x = 10
就定义了一个简单的整数变量。整数可用于计数、索引等多种场景。
浮点数(float) :用于表示带有小数点的数字,采用 IEEE 754 双精度浮点数格式。如y = 3.14
。浮点数在科学计算、金融计算等需要处理小数的场景中非常有用。
复数(complex) :以a + bj
的形式表示,其中a
为实部,b
为虚部,j
表示虚数单位。例如,z = 2 + 3j
。复数在数学和工程领域的特定计算中发挥作用。
2. 序列类型(Sequence Types)
列表(list) :列表是一种可变的有序序列,可以包含不同类型的元素。例如,my_list = [1, 'hello', True]
。通过索引可以访问列表中的元素,并且可以对列表进行修改、添加或删除元素等操作。
元组(tuple) :元组是不可变的有序序列,与列表类似,但一旦创建就不能修改。如my_tuple = (1, 'world', False)
。元组常用于表示固定结构的数据,如函数返回多个值时。
字符串(string) :字符串是由字符组成的不可变序列。在 Python 中,字符串可以使用单引号、双引号或三引号(用于多行字符串)来表示。例如,s = "Python is great"
。字符串支持多种操作,如切片、连接、查找等。
3. 映射类型(Mapping Types)
字典(dictionary) :字典是一种无序的键 - 值对数据结构,其中键必须是唯一的。例如,my_dict = {'name': 'John', 'age': 25}
。通过键可以快速查找对应的值,常用于存储和查询相关联的数据。
4. 集合类型(Set Types)
集合(set) :集合是无序的、不包含重复元素的数据结构。例如,my_set = {1, 2, 3}
。集合支持交集、并集、差集等操作,可用于数据去重、元素关系判断等场景。
5. 布尔类型(Boolean Type)
布尔类型只有两个值:True
和False
。它在条件判断、逻辑运算中起着关键作用。例如,x = 5; y = 10; result = x < y
,这里result
的值为True
。
二、常用内置常数(Built - in Constants)
Python 提供了一些内置常数,这些常数在编程过程中具有特殊的意义和用途。
None
:表示空值或者缺失值。在函数没有明确返回值时,默认返回None
。例如,一个函数只是执行一些操作而不需要返回特定结果时,可以使用None
。
True
和False
:这是布尔类型的两个值,在逻辑判断中使用。例如,在if
语句中判断条件的真假。
Ellipsis
(...
):这个常数在特定的语法结构中有特殊用途,比如在定义多维数组时可以作为占位符。
三、常用内置运算符(Built - in Operators)
1. 算术运算符
加法(+
) :用于数值相加,也可用于字符串连接和列表、元组等序列的连接。例如,2 + 3
得到5
,"hello" + "world"
得到"helloworld"
。
减法(-
) :用于数值相减。如5 - 2
得到3
。
乘法(*
) :对于数值是乘法运算,对于字符串和序列可以实现重复操作。例如,3 * 4
得到12
,"a" * 3
得到"aaa"
。
除法(/
) :执行浮点数除法,结果总是浮点数。例如,5 / 2
得到2.5
。
2. 比较运算符
等于(==
) :判断两个值是否相等。例如,2 == 2
返回True
,"hello" == "world"
返回False
。
不等于(!=
):判断两个值是否不相等。
大于(>
)、小于(<
)、大于等于(>=
)、小于等于(<=
):用于比较数值的大小关系,也可以用于比较字符串按照字典序的大小关系。
3. 逻辑运算符
与(and
) :当两个操作数都为True
时,结果为True
;否则为False
。例如,True and False
得到False
。
或(or
) :只要有一个操作数为True
,结果就为True
。例如,True or False
得到True
。
非(not
) :对操作数取反,not True
得到False
,not False
得到True
。
四、整除(Integer Division (//
))
整除运算符//
用于计算两个数相除并向下取整得到整数结果。例如,7 // 3
得到2
,-7 // 3
得到-3
。整除在处理需要得到整数部分结果的场景中非常有用,比如计算将一定数量的物品平均分配到若干个容器中时,每个容器能得到的物品数量。与普通除法(/
)不同,//
操作更关注整数部分的结果,并且在处理负数时遵循向下取整的规则。
五、模运算或余数运算符(%
)
模运算(%
)用于计算两个数相除的余数。例如,7 % 3
得到1
,10 % 2
得到0
。在很多实际应用中都非常有用,比如判断一个数是否能被另一个数整除(余数为 0 时表示能整除),或者在循环队列、哈希表等数据结构中确定索引位置等场景。例如,在一个长度为n
的循环队列中,如果当前位置为pos
,要向前移动m
个位置,可以通过(pos + m) % n
来计算新的位置。
六、类型影响语义(Types Affect Semantics)
在 Python 中,数据类型对操作的语义有着重要的影响。
数值类型:不同的数值类型之间进行操作时,可能会发生类型转换。例如,整数和浮点数进行算术运算时,整数会自动转换为浮点数,然后进行计算。这确保了计算结果的准确性和一致性。
序列类型 :对于列表、元组等序列类型,虽然它们有一些相似的操作(如索引、切片),但由于列表是可变的而元组是不可变的,在对它们进行修改操作时语义完全不同。对列表可以使用诸如append
、pop
等方法来改变列表的内容,但这些操作在元组上是不允许的。
布尔类型与其他类型 :布尔类型在逻辑运算中的语义是明确的,但当与其他类型进行操作时,也会遵循一定的规则。例如,在条件判断中,很多数据类型都可以被转换为布尔值,非零数值、非空字符串、非空列表等都被视为True
,而0
、""
、[]
等被视为False
。
七、运算符优先级(Operator Order)
Python 中的运算符有明确的优先级顺序。当一个表达式中包含多个不同类型的运算符时,按照优先级顺序进行计算。
括号优先级最高 :可以使用括号来改变运算顺序,括号内的表达式先进行计算。例如,(2 + 3) * 4
,先计算2 + 3
得到5
,然后再乘以4
得到20
。
算术运算符优先级 :先乘除后加减。例如,2 + 3 * 4
,先计算3 * 4 = 12
,然后再加上2
得到14
。其中,幂运算(**
)优先级高于乘除运算。
比较运算符优先级低于算术运算符 :例如,2 + 3 > 4
,先计算2 + 3 = 5
,然后再比较5 > 4
得到True
。
逻辑运算符优先级 :not
的优先级最高,然后是and
,最后是or
。例如,True or False and not True
,先计算not True
得到False
,然后False and False
得到False
,最后True or False
得到True
。
八、短路求值(Short - Circuit Evaluation)
短路求值是逻辑运算符and
和or
的一个重要特性。
and
的短路求值 :当使用and
连接两个表达式时,如果第一个表达式为False
,则不会再计算第二个表达式,因为整个表达式必然为False
。例如,False and some_function()
,这里some_function()
不会被调用。
or
的短路求值 :当使用or
连接两个表达式时,如果第一个表达式为True
,则不会再计算第二个表达式,因为整个表达式已经为True
。例如,True or some_function()
,some_function()
不会被调用。这种特性在编写条件判断和优化代码性能时非常有用,可以避免不必要的计算。
Python 的数据类型和操作是其编程的基础,深入理解这些概念对于编写高效、准确的 Python 程序至关重要。