运算符就是一些特殊的符号,用于数学计算、比较大小,判断逻辑等。Python的运费符主要包括算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符和位运算符。使用运算符将不同类型的数据按照一定的规则链接起来的式子,称为表达式。
使用算术运算符连接起来的式子,称为算术表达式;使用逻辑运算符连接起来的式子,称为逻辑表达式。下面开始对Python中常用的的运算符进行详细介绍。
算术运算符也即数学运算符,用来对数字进行数学运算,比如加减乘除。下表列出了 Python 支持所有基本算术运算符。
2、加法运算符很简单,和数学中的规则一样。当+用于字符串时,它还有拼接字符串(将两个字符串连接为一个)的作用。
赋值运算符主要用来变量等赋值。赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。
站长在线提醒大家,很多程序员常常把“=”和“==”搞混淆了。很多编程语言常常用错的两个符号。
比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。
高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。Python 的逻辑运算,主要包括and(逻辑与)、or(逻辑或)、not(逻辑非)。
Python 逻辑运算符用于操作 bool 类型的表达式,执行结果也是 bool 类型,这两点其实都是错误的!
Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。请看下面的例子:
你看,本例中 and 和 or 运算符操作的都不是 bool 类型表达式,操作的结果也不是 bool 值。
在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。
另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。
对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,所以 Python 按照下面的规则执行 and 运算:
如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果。
如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。
对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行 or 运算:
如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。
如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。
为运算符是把数字看作二进制数来进行计算的,因此需要将要执行运算的数据转换为二进制,然后才能运算。Python中的位运算符有按位与(&)、按位或()、按位异或(^)、按位取反(~)、左位移()和右移位()运算符。
按位与运算的运算符为“&”,它的运算法则是,两个操作数的二进制表示,只有对应位都为1,结果才为1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。看下方12&8的运算过程。
“按位或”运算的运算符为(),它的运算法则是,两个操作数的二进制表示,只有对应位都为0,结果才为0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。看下方48的运算过程。
“按位异或”运算的运算符为(^),它的运算法则是,两个操作数的二进制表示相同(同时为0或同时为1),结果才为0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。看下方48的运算过程。看下方31^22的运算过程。
“按位取反”运算也称“按位非”运算,运算符为“~”。“按位取反”运算就是将操作位数对应二进制中的1改为0,0改为1,如下所示:
“左移位”运算的运算符为“”,它的运算法则是将第一个二进制操作数向左移动指定的位数,左边(高位端)溢出的被丢弃,右边(低位端)的空位用0补充。左移位运算相对于乘以2的N次方。
列:int类型的数据48对应的二进制数位00110000,将左移一位,根据左移位运算符的运算规则得出(001100001)=01100000,所以转换为十进制数就是96(48*2);将其左移2位,根据左移位运算符的运算规则可以得出(001100002)=11000000,所以转换为十进制数就是192,(48*2的2次方),执行过程如下:
#左移位运算过程十进制:48 00110000(左移1位)十进制:96 (0被丢弃)01100000(左移后补0)(左移2位)十进制:192 (0被丢弃)11000000(左移后补0)
“右移位”运算的运算符为“”,它的运算法则是将第一个二进制操作数向右移动指定的位数,右边(低位端)溢出的位被丢弃,而当填充左边(高位端)的空位是,如果高位端是0(正数),则左侧空位填入0;如果最高位是1(负数),则左侧空位填入1。右移位运算相对于除以2的N次方。
站长在线微信提示:由于位移运算的速度很快,因此当程序中遇到表达式乘以或者除以2的N次方的情况下,一般采用位移运算来代替。
在IDLE中创建一个名为jiamijiemi.py的文件,然后再该文件中定义两个变量:一个用于保存密码,另一个用于保存加密参数。然后应用左移位运算符实现加密,并输出结果,最后应用右移位运算符实现解密,输出结果代码如下:
下节预告:零基础Python完全自学教程9:Python中运算符的优先级和条件表达式

