7 Python运算符和操作对象

运算符和操作对象是计算机中比较常见的,所有计算都涉及运算符和操作对象。本节将介绍Python中的运算符和操作对象。

什么是运算符和操作对象:

运算符是一些特殊符号的集合,我们前面学习的加(+)、减(-)、乘(*)、除(/)、地板除(//)、取余(%)等都是运算符。操作对象是由运算符连接起来的对象。加、减、乘、除4种运算符是我们从小学就开始接触的,不过乘除的写法不一样,这个要记住。小萌看到这个标题后快速回忆,这个学习方式不错,不但能温故知新,还做了联想记忆和纵向比对,值得借鉴。
Python支持以下8种运算符:
(1)算术运算符。
(2)比较(关系)运算符。
(3)赋值运算符。
(4)逻辑运算符。
(5)位运算符。
(6)成员运算符。
(7)身份运算符。
(8)运算符优先级。
这么多,看来今天可以大开眼界了,小萌心里一阵狂喜。
接下来让我们一个一个学习吧!

1.算术运算符

表为算术运算符的描述和实例。假设变量a为10,变量b为5。

算术运算符:

下面进行实战。在交互模式输入如下:

>>> a=10
>>> b=5
>>> print(a+b)
15
>>> print(a-b)
5
>>> print(a*b)
50
>>> print(a/b)
2.0
>>> print(a**b)
100000
>>> print(9//2)
4
>>> print(9.0//2.0)
4.0

此处的加、减、乘、除,取余、取整除前面都已经做过详细介绍,较好理解。但是幂运算与数学中学习的乘方运算的形式是不一样的,是a 2 这样的形式。有没有更好的方式让人更容易记住这个符号呢?
有一个很好的例子,为什么会出现32位和64位操作系统,并且现在大家都趋向于安装64位的软件。先看交互模式下的两个输入:

>>> 2**32/1024/1024/1024
4.0
>>> 2**64/1024/1024/1024
17179869184.0

第一个输入,2**32是2的32次方,这是32位操作系统最大支持内存的字节数,除以第一个1024是转换为KB, 1KB=1024B,除以第二个1024是转换为MB, 1MB=1024KB,除以第三个1024是转换为GB, 1GB=1024MB。这个结果意味着32位操作系统最大只能支持4GB的内存,现在手机都是4GB标配了,电脑4GB怎么够呢?所以大家都趋向于选择64位操作系统了,64位操作系统能支持多大内存,大家可以自行计算一下。

2.比较运算符

表为比较运算符的描述和实例。以下假设变量a为10、变量b为20。

比较运算符

下面进行实战。

>>> a=10
>>> b=20
>>> a==b
False
>>> a!=b
True
>>> a>b
False
>>> a<b
True
>>> a>=b
False
>>> a<=b
True
>>> a+10>=b
True
>>> a+10>b
False
>>> a<=b-10
True
>>> a<b-10
False
>>> a==b-10
True

小智:小萌,注意到比较运算的特色了吗?
小萌:比较运算只返回True和False两个值。
小智:对的,能看出比较运算符两边的值和比较的结果有什么特色吗,特别是对于==、<、>、<=、>=这5个比较运算符的结果?
小萌:让我仔细观察观察,对于这些比较运算,只要左边和右边的操作数满足操作符的条件,结果就是True,不满足就是False。
小智:你理解的没错,其实可以通俗地理解为,比较结构符合大家的心里预期,结果就是True,不符合结果就是False。比如上面的例子中a<b,即10<20,符合大家的预期,就返回True;对于a==b,即10==20,大家一眼就能看出这两者不相等,就返回False。
注意:在一些地方,会用1代表True、0代表False,这是正确也是合理的表示方式。大家可以理解为开和关,就像我们在物理中所学的电流的打开和关闭一样。后面会有更多地方用1和0代表True和False。
另外,在Python 2中,有时会看到<>符号。和!=一样,<>也表示不等于,在Python 3中已去除该符号。若以后看到<>运算符,则使用的是Python 2。

3.赋值运算符

表为赋值运算符的描述和实例。假设变量a为10,变量b为20。

赋值运算符:

下面进行实战。

>>> a=10
>>> b=20
>>> c=0
>>> c=a+b
>>> print(c)
30
>>> c+=10
>>> print(c)
40
>>> c-=a
>>> print(c)
30
>>> c*=a
>>> print(c)
300
>>> c/=a
>>> print(c)
30.0
>>> c%=a
>>> print(c)
0.0
>>> c=a**5
>>> print(c)
100000
>>> c//=b
>>> print(b)
20
>>> print(c)
5000

3.位运算符

位运算符是把数字看作二进制进行计算的。表为Python中位运算的描述和实例。假设变量a为60,变量b为13。

位运算符:

下面进行实战。

>>> a=60
>>> b=13
>>> c=0
>>> c=a&b
>>> print(c)
12
>>> c=a|b
>>> print(c)
61
>>> c=a^b
>>> print(c)
49
>>> c=~a
>>> print(c)
-61
>>> c=a<<2
>>> print(c)
240
>>> c=a>>2
>>> print(c)
15

4.逻辑运算符

Python语言支持逻辑运算符。表为逻辑运算符的描述和实例,假设变量a为10,变量b为20。

逻辑运算符:

下面进行实战。

>>> a=10
>>> b=20
>>> a and b
20
>>> a or b
10
>>> not a
False
>>> not b
False
>>> not -1
False
>>> not False
True
>>> not True
False

5.成员运算符

除了之前介绍的运算符外,Python还支持成员运算符,表为成员运算符的描述和实例。

成员运算符:

下面进行实战。

>>> a=10
>>> b=5
>>> list=[1,2,3,4,5]
>>> print(a in list)
False
>>> print(a not in list)
True
>>> print(b in list)
True
>>> print(b not in list)
False

你可能会疑惑list是什么,list是一个集合,此处不做具体讲解,后面章节会有详细介绍。

6.身份运算符

身份运算符用于比较两个对象的存储单元,表为身份运算符的描述和实例。

身份运算符:

下面进行实战。

>>> a=10
>>> b=10
>>> print(a is b)
True
>>> print(a is not b)
False
>>> b=20
>>> print(a is b)
False
>>> print(a is not b)
True

注意:后面已对变量b重新赋值,因而输出结果与前面不太一致。

7.运算符优先级

表列出了从最高到最低优先级的所有运算符。

运算符优先级:

当一个表达式中出现多个操作符时,求值的顺序依赖于优先级规则。Python遵守数学操作符的传统规则。
小萌,还记得数学里面操作符的传统规则是怎样的吗?
恩,有括号先算括号里的,无论是括号里还是括号外的,都是先乘除、后加减。在Python中有更多操作运算符,可以使用缩略词PEMDAS帮助记忆部分规则。
(1)括号(Parentheses, P)拥有最高优先级,可以强制表达式按照需要的顺序求值,括号中的表达式会优先执行,也可以利用括号使得表达式更加易读。
例如,对于一个表达式,想要执行完加减后再做乘除运算,交互模式输入如下:

>>> a=20
>>> b=15
>>> c=10
>>> d=5
>>> e=0
>>> e=(a-b)*c/d
>>> print('(a-b)*c/d=',e)
(a-b)*c/d= 10.0

顺利达到了我们想要的结果,如果不加括号会怎样呢?

>>> e=a-b*c/d
>>> print('a-b*c/d=',e)
a-b*c/d= -10.0

结果与前面完全不同了,这里根据先乘除后加减进行运算。如果表达式比较长,加上括号就可以使得表达式更易读。

>>> e=a+b+c-c*d
>>> print('a+b+c-c*d=',e)
a+b+c-c*d= -5

以上输入没有加括号,表达式本身没有问题,但看起来不太直观。如果进行如下输入:

>>> e=(a+b+c)-(c*d)
>>> print('(a+b+c)-(c*d)=',e)
(a+b+c)-(c*d)= -5

这样看起来就非常直观。运算结果还是一样的,但我们一看就能明白该表达式的执行顺序是怎样的。
(2)乘方(Exponentiation, E)操作拥有次高的优先级,例如:

>>> 2**1+2
4
>>> 2**(1+2)
8
>>> 2**2*3
12
>>> 2*2**3
16
>>> 2**(2*3)
64

以上结果解释:2的一次方为1,加2后结果为4;1加2等于3,2的3次方结果为8;2的2次方为4,4乘以3等于12;2的3次方为8,2乘以8等于16;2乘以3等于6,2的6次方为64。
(3)乘法(Multiplication, M)和除法(Division, D)优先级相同,并且高于有相同优先级的加法(Addition, A)和减法(Subtraction, S),例如:

>>> a+b*c-d
165
>>> a*b/c+d
35.0

(4)优先级相同的操作按照自左向右的顺序求值(除了乘方外),例如:

>>> a+b-c+d
30
>>> a+b-c-d
20

其他运算符的优先级在实际使用时可以自行尝试判断。若通过观察判断不了,则可以在交互模式下通过实验进行判断。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容