后端开发 \ Python \ Python--操作符

Python--操作符

总点击88
简介:我把常用的Python操作符分为以下4类:标准算数操作符;比较操作符;逻辑操作符;位运算操作符。除了最后一类一般只在位运算中使用,应用面不算很广,其他三类则基本涵盖了整个Python语言的基本应用。

我把常用的Python操作符分为以下4类:标准算数操作符;比较操作符;逻辑操作符;位运算操作符。除了最后一类一般只在位运算中使用,应用面不算很广,其他三类则基本涵盖了整个Python语言的基本应用。

1. 标准算数操作符:

(1)+   -   *   /:加减乘除,不用多做解释了。需要注意的是,+ 号的意义远比数学意义上的加法要丰富,比如,在字符串的运算中,+号还表示两个字符串的加和。

此外,需要注意的是 / 操作符,因为在python当中, / 的用法和C++之类的编译语言是有所不同的。简单来说,Python中的 / 是“浮点除法”,也就是通常我们在数学意义上讲的除法,是“真正”的除法,得到的就是我们数学中应得的值,而在C++等这些编译语言中,意义则是“地板除”(取比商小的最大整数)

可以举例,看的更清:

int a = 3;

int b = 2;

cout << a / b;

以上是C++代码,结果为1. 而 / 操作符运用于Python语言,情况就不一样了:

print(3 / 2)

结果是1.5. 当然,python中想要实现“地板除”也很容易,它有专门用于“地板除”的操作符 //. 具体见下面。

(2)  //  %  ** :分别是“地板除”,取余,以及乘方运算。


地板除刚才已经说过,举例如下:

print(3 // 2)

运行结果为1。

取余运算也是我们常用的操作符,一个最简单的例子是判断整数的奇偶性:

def isEven(n):

if n % 2 == 0:

return True

return False

如果一个正数对2取余为0,那么证明这个整数是个偶数。


既然在这里说到了奇偶性的判断问题,那不妨再补充一个常识:就是我们判断偶数用的是n % 2 == 0,但是在判断奇数的时候应该使用的是n % 2 != 0,而不能使用n % 2 == 1,因为存在输入是负数的情况。这一点其实至少在Python 3中已经不存在问题了,比如,print(-1 % 2)的结果还是1,但是C++中就会出错:

int a = -3;

int b = 2;

cout << a % b;

结果是-1,如果使用n % 2 == 1的方法,那么就会得出-1不是奇数的错误结论。所以,即便Python中不受影响,也最好养成良好的编程习惯。

**是乘方操作符,a ** b的意思是a的b次方:2 ** 4结果是16. 这个就不用多说了。

需要注意的是,这些运算操作符是当然也是有优先级的。具体什么样,大家可以自己体会。我想说的是,在实际操作中,我们最好养成带括号的习惯,这样极不容易出错,也提高了写代码的效率。

2. 比较操作符:

一共6种:>,<,>=,<=,==,!=


从左往右,依次是:大于,小于,大于等于,小于等于,等于,不等于。这个我想大家都知道,不多说了。不过,需要注意的是Python中为了实现更简洁的代码,以下这种多个比较在同一行进行的结构,也是允许的:

print(3 < 4 < 5)

结果是True

3. 逻辑操作符:

一共3种:and,or,not


含义跟英文直接翻译是一样的:且,或,非。这种几乎接近于自然语言的写法使得Python代码非常易读,易写。比如:

a = 1

b = 2

print(a == 3 and b == 2)

print(not a == 1)

print(a == 2 or b == 2)

输出结果分别是:False,False,True.


有时,逻辑操作符还经常跟is连接起来使用,简直跟自然语言一模一样:

a = None

if a is None:

print("a is None")

结果是输出字符串”a is None”,is按字面理解,表判断。这一点后面讲对象比较的时候还会再说。

3. 位操作符:

Python中的整数支持位运算,所谓位运算,是说任何一个整数(不论正负)都可以在计算机环境里表示成一串二进制字符的形式(0,1串),我们可以在这些字符上做相应的运算。那么这种运算有什么用呢?这一点留在以后,专门讲解位运算的时候会说,现在我们只需要知道常用的位运算操作符都是什么含义就行。

一共6种:按优先级顺序排列如下:

(1) ~:取反。将二进制形式的整数,0变成1,1变成0。比如:print(~2)结果是-3

(2) <<:左移。a << b表示将整数a的二进制形式向左移动b位。比如:print(2 <<1)结果是4,左移的规则是最左侧溢出,右侧空余的位补0

(3) >>:右移。a >> b表示将整数a的二进制形式向右移动b位。比如:print(2 >> 1)结果是1,右移的规则是最右侧溢出,左侧空余的位补0

(4) &:“与”运算符,同为真则真,有一个为假,则为假,位的具体操作如下:


0 & 0 == 0


0 & 1 == 0


1 & 1 == 1

(5) ^:异或,同为0,异为1. 比如:2 ^ 2结果是0,而2 ^ 3结果是1。对二进制位的0,1操作,若对应位相同,保留0;若对应位不同,保留1.

(6) | :或,有一个为真,则为真,两个都是假,才是假。位的具体操作如下:


0 | 0 = 0


1 | 0 = 0


1 | 1 = 1


当然啦,位运算是一种相对整数运算比较复杂的运算,有很多问题可以用位运算的巧妙解决,具体可以看我博文中位运算的相关例题。

意见反馈 常见问题 官方微信 返回顶部