Python基础概念_3_操作符与表达式
操作符与表达式
4 操作符与表达式
我们知道程序其实是代码段的组合,就像我们写的作文是一个个的段落堆积起来的,每一个段落又由句子组成,句子又包含“主谓宾定状补”。本章我们就来讲讲程序里的“句子”。
4.1 操作符
操作符是用于告诉解释器执行特定的数学或逻辑运算的符号表。这里最最容易理解的就数字运算符比如:+、-、*、/。Python支持的操作符有以下类型:
Ø 算术运算符
Ø 比较(关系)运算符
Ø 赋值运算符
Ø 逻辑运算符
Ø 位运算符
Ø 会员操作符
Ø 标识操作符
以下我们通过表格形式演示这些操作符的使用:
4.1.1 算术运算符
操作符 |
描述 |
例子 |
代码示例 |
+ |
加法:左侧操作数加右侧操作数 |
a + b |
4+6 |
- |
减法:左侧操作数右侧操作数 |
a - b |
10-20 -10 |
* |
乘法:左侧操作数乘右侧操作数 |
a * b |
10*2 20 |
/ |
除以:左侧操作数除以右侧操作数 |
b / a |
6/2 3 |
% |
取模:左侧操作数除右侧操作数的余值 |
b % a |
5%2 1 |
** |
幂运算- 执行对操作指数(幂)的计算,操作符前是底数,后是指数 |
a**b |
2**3 8 |
// |
地板除:左侧操作数除右侧操作数得到的 一个整数或则尾数带0的浮点数(这个数字乘以右操作数最接近左侧操作符) |
a//b |
9.9//2.0 4.0 9.1//2.3 3.0 9.2//2.3 4.0 9//2 4 |
- |
负数:是一个数的负数 |
-a |
-1 1 --1 1 |
|
|
|
|
|
|
|
|
|
|
|
|
4.1.2 比较运算符
运算符 |
描述 |
示例 |
代码示例 |
== |
等于:判断两个操作数的值是否相等,相等则返回True(真)反则则反。 |
a==b |
2==2 True |
!= |
不等于:判断两个操作数的值是否不等,不等则返回True(真)反则则反。 |
a!=b |
2!=3 True |
> |
不于:判断左侧操作数是否相等大于右侧操作数,大于则返回True(真)反则则反。 |
a>b |
2>3 False
|
< |
小于:判断左侧操作数是否相等小于右侧操作数,小于则返回True(真)反则则反。 |
a<b |
2<3 True |
>= |
大于等于:判断左侧操作数是否相等大于等于右侧操作数,大于等于则返回True(真)反则则反 |
a>=b |
2>=3 False |
<= |
小于等于:判断左侧操作数是否相等小于等于右侧操作数,小于等于则返回True(真)反则则反 |
a<=b |
2<=3 True |
4.1.3 赋值运算符
运算符 |
描述 |
示例 |
运算符 |
= |
赋值:将右侧操作数赋值给左侧的操作数 |
c = a + b |
c=2+3 print(c) 5 |
+= |
加赋值:加赋值操作符,左侧操作数与右侧操作数和的结果再赋给左侧操作数 |
c += a 注: 相当于c = c + a |
c=1 c+=2 print(c) 3 |
-= |
减赋值:减赋值操作符,左侧操作数与右侧操作数差的结果再赋给左侧操作数 |
c -= a |
c=1 c-=2 print(c) -1 |
*= |
乘赋值:乘赋值操作符,左侧操作数与右侧操作数乘的结果再赋给左侧操作数 |
c *= a 注:相当于c =c *a |
c=2 c*=3 print(c) 6 |
/= |
除赋值:除赋值操作符,左侧操作数与右侧操作数相除的结果再赋给左侧操作数 |
c /= a 注:相当于c=c/a |
c=6 c/=2 print(c) 3 |
%= |
模赋值:模赋值操作符,左侧操作数与右侧操作数模的结果再赋给左侧操作数 |
c %= a 注:相当于c =c %a |
c=5 c%=2 print(c) 1 |
**= |
幂赋值:幂赋值操作符,左侧操作数的右侧操作数次幂的结果再赋给左侧操作数 |
c **= a 注:相当于c =c**a |
c=2 c**3 print(c) 8 |
//= |
地板除赋值:模赋值操作符,左侧操作数与右侧操作数地板除的结果再赋给左侧操作数 |
c //= a 注:相当于c = c // a |
c=9.1 c//2.3 print(c) 3.0 |
4.1.4 逻辑运算符
运算符 |
描述 |
示例 |
运算符 |
and |
与:如果两个操作数都是真的则真。反之则反。 |
a and b |
1 and 0 (1>2) and (2<3) False |
or |
或:如果有两个操作数有一个真则真。都假则为假 |
a or b
|
1 or 0 1 (1>2) or 2<3) True |
not |
非:对逻辑运算符取反,真的反为假,假的反为真。 |
not a |
not 0 True not 1 False not (1>2) True |
4.1.5 位运算符
在演示位运算符号前,我们先假设有两个数 a =60、b=13; 它们以二进制标识如下:
a的二进制结构0011 1100
二进制转十进制:0*20+0*21+1*22+1*23+1*24+1*25
即0*2**0+0*2**1+1*2**2+1*2**3+1*2**4+1*2**5
b的二进制结构0000 1101
二进制转十进制:1*20+0*21+1*22+1*23
即1*2**0+0*2**1+1*2**2+1*2**3
那么
a) a&b
a&b = 0000 1100是怎么运算的呢?
运算详解:a和b的二进制对应位两两取与。
a) a|b
同理a|b是a和b的二进制对应位两两或,即得到a|b=0011 1101
b) a^b
这里是异或,即a和b的二进制对应位相同的则返回0,不同则为1,所以a^b = 0011 0001
c) ~a
这里是取反,即a的二进制对应位取反。所以~a = 1100 0011
d) a<<2
这里是左位移符号,即a的二进制都向右移动二位。所以是a<<2=2a) a>>2
这里是右位移符号,即a的二进制都向左移动二位。所以是a>>2=15
注:参考e)即可推断出该值。
操作符 |
描述 |
示例 |
代码示例 |
& |
位与:二进制对应位进行与操作 |
(a & b) = 12 即 0000 1100 |
a=60 b=13 a&b 12 |
| |
位或:二进制对应位进行或操作 |
(a | b) = 61 即 0011 1101 |
a=60 b=13 a|b 61 |
^ |
位异或:二进制对应位进行异或操作。 |
(a ^ b) = 49 即 0011 0001 |
a=60 b=13 a^b 49 |
~ |
位取反:二进制对应位进行取反操作。 |
(~a ) = -61 即 1100 0011以2的补码形式由于带符号二进制数。 |
a=60 ~a -61 |
<< |
左移位:左操作数的值左移由右操作数指定的位数。 |
a << 2 = 240 即 1111 0000 |
a<<2 240 |
>> |
右移位:右操作数的值右移由右边操作数指定的位数。 |
a >> 2 = 15 即 0000 |
a>>2 15 |
4.1.6 会员操作符
操作符 |
描述 |
示例 |
代码示例 |
in |
成员存在:判断一个元素是否存在某个数据结构内,存在返回True,否则False。 |
x in y |
'python' in ['python','xiaodao'] True |
not in |
成员不存在:判断一个元素是否存在某个数据结构内,不存在返回True,否则False。 |
x not in y |
'python' not in ['python','xiaodao'] False |
4.1.7 标识操作符
运算符 |
描述 |
例子 |
运算符 |
is |
同一运算符:判断两个变量是不是一个,是则返回True,否则为False。 |
x is y |
x = y = [4,5,6] z = [4,5,6] x is y True |
is not |
非同一运算符:判断两个变量是不是一个,不是则返回True,否则为False。 |
x is not y |
x = y = [4,5,6] z = [4,5,6] x is not z True |
4.2 操作符优先级
在开始本章节之前让我们先回顾一下两头小羊过河的故事:
一天,两只小羊在独木桥前相遇,小白羊说:“让我先过去!”
“不对,应该让我先过去!”小黑羊大叫道。
小白羊很生气,它用角去顶小黑羊,小黑羊也不甘示弱,冲了上去,两只羊互不相让。
小白羊想:我的毛洁白无瑕,比你高贵,应该让我先过去。小黑羊想:我的力气比你大,肯定能战胜你。“扑通”一声,两只小羊同时掉下了水。
这个故事当然是教育我们要谦让,引入这个故事是要提到另外一点:优先级。通过上面章节的学习我们了解了7类常用的操作符,显然这些操作符是组合在一起用的。那么哪些操作符先执行,哪些后执行呢?我们来看Python里对操作符优先级的定义:
运算符通常是从左往右结合的,例如,有相同优先级的运算符按照从左向右的顺
序计算。例如,2+3+4 的顺序是(2+3)+4。一些运算符,如赋值运算符有从右向左的
结合顺序,例如a=b=c 被当成a=(b=c) 。
操作符优先级由高到低排列见下表:
运算符 |
描述 |
程序示例 |
** |
幂 |
2+2**6/4 18.0 6.0 |
~ + - |
补码,正负号 |
|
* / % // |
乘,除,取模和地板除 |
|
+ - |
加法和减法 |
|
>> << |
左,右按位转移 |
|
& |
位与 |
|
^ | |
按位异'或`'和定期`或' |
|
<= < > >= |
比较运算符 |
|
<> == != |
等式运算符 |
|
= %= /= //= -= += *= **= |
赋值运算符 |
|
is is not |
标识运算符 |
|
in not in |
成员运算符 |
|
not or and |
逻辑运算符 |
注:当然我们可以通过()来改变优先级
4.3 表达式
表达式就像我们作文中的加了修饰的词,比如晴朗的天空。它一般有变量、操作符组成。比如我们计算一个矩形的面积可以这样做:
代码示例:
length = 5
breadth = 2
area = length * breadth
print('面积是', area)
面积是 10
print('周长是',2 * (length+ breadth))
周长是 14
4.4 总结
前面看到了如何使用操作符符,操作数和表达式,这是程序的最为基本的构成。接下来,将会看到如何通过语句在程序中使用这些内容。