2.3 运算符的使用
编程里面的运算符就好比我们数学里面的加减乘除等运算法则,每一种编程语言的运算符是大同小异的。Python支持以下类型的运算符。
● 算术运算符:计算两个变量的加减乘除等计算法则。
● 比较(关系)运算符:比较两个变量的大小情况。
● 赋值运算符:先计算后赋值到新的变量。
● 逻辑运算符:与或非的逻辑判断。
● 位运算符:把数值看成二进制来进行计算。
● 成员运算符:判断字符串、元组、列表或字典中是否含有成员。
● 身份运算符:用于比较两个对象的存储单位,比如判断变量a和b在计算机的内存地址是否一致。
2.3.1 算术运算符
算术运算符也就是我们常说的加减乘除法则,主要在程序里实现简单的运算。Python的算术运算符如表2-2所示。
表2-2 Python的算术运算符
根据上述算术运算符,下面通过实例演示Python算术运算符的具体操作,代码如下:
x = 8 y = 5 print('加法运算符:', x+y) print('减法运算符:', x-y) print('乘法运算符:', x*y) print('除法运算符:', x/y) print('取模运算符:', x%y) print('幂运算符:', x**y) print('取整运算符:', x//y)
在PyCharm上运行上述代码,运行结果如图2-4所示。
图2-4 算术运算符的输出结果
2.3.2 比较运算符
比较(关系)运算符是比较两个变量之间的大小关系,而且两个变量的数据类型必须相同,比较结果以True或者False返回。Python的比较(关系)运算符如表2-3所示。
表2-3 Python的比较(关系)运算符
我们将通过代码来进一步讲述比较(关系)运算符的具体操作,代码如下:
x = 2 y = 3 print('等于运算符:', x==y) print('不等于运算符:', x!=y) print('大于运算符:', x>y) print('小于运算符:', x<y) print('大于等于运算符:', x>=y) print('小于等于运算符:', x<=y)
上述代码设置变量x和y,然后通过比较(关系)运算符将两变量进行对比并将对比结果输出。在PyCharm中运行代码,运行结果如图2-5所示。
图2-5 比较运算符的输出结果
2.3.3 赋值运算符
赋值运算符是算术运算符的一个特殊使用,其实质是两个变量进行算术运算并将运算结果重新赋值到其中一个变量里。Python的赋值运算符如表2-4所示。
表2-4 Python的赋值运算符
根据上述的赋值运算符,我们通过代码的形式加以实现。由于每次赋值运行后,变量x的数值会发生变化,因此执行下次赋值运算时必须重设变量x的数值。具体代码如下:
x = 5 y = 2 print('简单的赋值运算符:', x+y) x += y print('加法赋值运算符:', x) x = 5 x -= y print('减法赋值运算符:', x) x = 5 x *= y print('乘法赋值运算符:', x) x = 5 x /= y print('除法赋值运算符:', x) x = 5 x %= y print('取模赋值运算符:', x) x = 5 x **= y print('幂赋值运算符:', x) x = 5 x //= y print('取整赋值运算符:', x)
每次执行赋值运算的时候,变量x和y的值都是5和2进行计算并赋值给变量x,可以通过输出结果检测赋值计算是否正确。上述代码在PyCharm中运行,运行结果如图2-6所示。
图2-6 赋值运算符的输出结果
2.3.4 逻辑运算符
逻辑运算符是将多个条件进行与或非的逻辑判断,这种类型的运算符常用于Python的条件判断。条件判断会在第4章详细讲述,现在首先了解与或非的逻辑判断,具体说明如表2-5所示。
表2-5 Python的逻辑运算符
逻辑运算符的与或非需要两个对象进行逻辑判断,这两个对象可以是任意的数据类型。读者有兴趣的话,可以自行研究多种数据类型组合的逻辑判断结果。我们通过代码简单演示逻辑运算符,代码如下:
x = False y = 'a' print('与运算符:', x and y) print('或运算符:', x or y) print('非运算符:', not x)
变量x和y的数据类型分别为布尔型和字符串,逻辑运算符会首先判断对象的真假性,如变量y,如果是空的字符串,则返回False,非空的字符串就返回True,同理,元组、列表和字典与字符串的判断逻辑是相同的;最后根据两个对象的真假执行与或非的逻辑判断。将上述代码在PyCharm里运行,运行结果如图2-7所示。
图2-7 逻辑运算符的输出结果
2.3.5 位运算符
位运算符是将数值转换为二进制进行计算,我们无需将数值转换二进制,只需对数值使用位运算符,Python会自动将数值转换二进制计算并将计算结果转换成十进制。位运算符如表2-6所示。
表2-6 Python的位运算符
我们通过代码的形式来讲述位运算符的具体使用方式,代码如下:
x = 60 y = 13 print('&运算符:', x & y) print('|运算符:', x | y) print('^运算符:', x ^ y) print('~运算符:', ~x) print('<<运算符:', x << 2) print('>>运算符:', x >> 2 )
二进制数据是用0和1来表示的数值。它的基数为2,进位规则是逢二进一,借位规则是借一当二。由于Python是解释性编程语言,因此位运算符在实际开发中使用频率相对较少,读者可做了解。在PyCharm中运行上述代码,运行结果如图2-8所示。
图2-8 位运算符的输出结果
2.3.6 成员运算符
成员运算符主要是判断字符串、元组、列表或字典里是否包含某个成员,返回结果以True或False表示。Python的成员运算符如表2-7所示。
表2-7 成员运算符
我们以字符串和列表来演示成员运算符的操作,具体代码如下:
x = 'hello world' y = [1, 2, 3, 4] print('in运算符:', 'hello' in x) print('not in运算符:', 2 not in y)
上述代码在PyCharm中运行,运行结果如图2-9所示。
图2-9 成员运算符的输出结果
2.3.7 身份运算符
身份运算符是比较两个对象的存储单位是否一致,两个对象可以为任意的数据类型、函数和类等任意形式。Python的身份运算符如表2-8所示。
表2-8 Python的身份运算符
如果两个变量的值是完全相同的,则说明这两个变量是来自同一个对象,否则是来自不同对象。我们通过代码的形式来加以说明,代码如下:
x = 10 y = 10 print('is运算符:', x is y) y = 20 print('is not运算符:', x is not y)
当变量x和y的值相同的时候,则两者是引用同一个对象,使用is运算符输出的结果为True;若改变变量y的值,两个变量就各自引用不同的对象,使用is not运算符将输出的结果为True。运行结果如图2-10所示。
图2-10 身份运算符的输出结果
2.3.8 运算符的优先级
运算符的优先级别是指在一个Python语句里,若包含两种或以上的运算符,运算符会根据优先级高低依次执行运算顺序。表2-9从高到低列出了所有运算符的优先级。
表2-9 运算符的优先级
2.4 本章小结
本章主要讲述变量的命名与使用、变量的深浅拷贝以及运算符的使用。在讲述这三个知识点的时候,涉及到Python的数据类型,如数字、字符串、布尔型、元组、列表和字典等。对于初学者来说,Python的数据类型有点陌生,通过本章的学习,读者有个大致的了解即可。
变量的命名需要遵循变量的命名规则;而变量的使用首先对变量直接赋值,通过赋值相当于对变量进行定义和声明其数据类型。如果对已有的变量重新赋值,则表示对变量重新进行定义和声明。
变量的深浅拷贝分为深拷贝和浅拷贝,只适用于变量值为列表或字典的变量。读者要掌握深拷贝和浅拷贝的区别以及两者的拷贝方式。
Python的运算符共有7类,分别为:
● 算术运算符:计算两变量的加减乘除等计算法则。
● 比较(关系)运算符:比较两个变量的大小情况。
● 赋值运算符:先计算后赋值到新的变量。
● 逻辑运算符:与或非的逻辑判断。
● 位运算符:把数值看成二进制来进行计算。
● 成员运算符:判断字符串、元组、列表或字典中是否含有成员。
● 身份运算符:用于比较两个对象的存储单位,比如判断变量a和b在计算机内存地址是否一致。
不同的运算符有不同的优先级别,掌握运算符的优先级别是编写高质代码的基础。