3.运算符和流程控制语句

3.1运算符

3.1.1算术运算符

(1)运算符+:两个操作数相加,适用于数字、字符串、列表、元组。
(2)运算符-:两个操作数相减,适用于数字、集合(差集)。
(3)运算符*:两个操作数相乘,适用于数字、字符串、列表、元组。
(4)运算符/:两个操作数相除,返回浮点数,适用于数字。
(5)运算符%:取余,返回两个操作数相除的余数,适用于数字。
(6)运算符//:取整除,返回两个操作数相除得商的整数部分,适用于数字。
(7)运算符**:返回操作数的n次幂,适用于数字。
>>>
>>>
>>>
5
>>>
1
>>>
6
>>>
1.5
>>>
1
>>>
1
>>>
9
3.1.2赋值运算符
(1)运算符=:将数据赋值给变量。
(2)运算符+=:a += b,将a加b再赋值给a,等价于a = a + b。
(3)运算符-=:a -= b,将a减b再赋值给a,等价于a = a - b。
(4)运算符*=:a *= b,将a乘b再赋值给a,等价于a = a * b。
(5)运算符/=:a /= b,将a除b再赋值给a,等价于a = a / b。
(6)运算符%=:a %= b,将a除b取余后再赋值给a,等价于a = a % b。
(7)运算符//=:a //= b,将a除b将商取整后再赋值给a,等价于a = a // b。
(8)运算符**=:a **= b,求a的b次幂数值,再赋值给a,等价于a = a ** b。
>>>
>>>
>>>
>>>
5
>>>
>>>
3
>>>
>>>
6
>>>
>>> a
3.0
>>>
>>>
1.0
>>>
>>>
0.0
>>> a **= b
>>>
0.0
注:Python中不支持++、--操作。
3.1.3比较运算符
(1)运算符==:如果两个操作数相等,则返回True。
(2)运算符!=:如果两个操作数不相等,则返回True。
(3)运算符>:如果左操作数大于右操作数,则返回True。
(4)运算符>=:如果左操作数大于或等于右操作数,则返回True。
(5)运算符<:如果左操作数小于右操作数,则返回True。
(6)运算符<=:如果左操作数小于或等于右操作数,则返回True。
>>>
>>>
>>>
False
>>>
True
>>>
False
>>>
True
运算符支持数据类型有数字、字符串、列表、元组、集合(无序,无法判断大小,只支持==和!=)。
>>>
>>>
>>>
False
>>>
>>>
>>>
True
>>>
>>>
>>>
True
>>>
>>>
>>>
True
>>>
False
3.1.4逻辑运算符
(1)运算符and:若2个操作数都为真,则返回True,表示与。
(2)运算符or:若2个操作数中任一操作数为真,则返回True,表示或。
(3)运算符not:若操作数为假,则返回True,表示非。
>>>
2
>>>
1
>>>
False
>>>
True
当1和2进行与运算,由于操作数1为真,则需要知道操作数2才可以得到运算结果,因此返回操作数2。
当1和2进行或运算,由于操作数1为真,则不需要知道操作数2就可以得到运算结果,因此返回操作数1。
逻辑运算符支持的数据类型有数字、列表、元组、集合、字典。
>>>
'world'
>>>
''
>>>
[4, 5, 6]
>>>
[]
>>>
(4, 5, 6)
>>>
()
>>>
{4, 5, 6}
>>>
set()
>>>
{1: 'world'}
>>>
{}
3.1.5成员运算符
  (1)运算符in:若在序列中找到元素,返回True。
(2)运算符not in:若在序列中没有找到元素,返回True。
成员运算符支持的数据类型有字符串、列表、元组、集合、字典。
>>>
>>>
True
>>>
>>>
True
>>>
>>>
True
3.1.6身份运算符
(1)运算符is:若操作数的地址相同,则返回True。
(2)运算符is not:若操作数的地址不同,返回True。
>>> a = 1
>>>
>>> a is b
True
>>> s1 = 'hello'
>>>
>>>
True
>>>
>>>
>>>
False
>>>
False
>>>
>>> tup2 = (1,3,2)
>>>
False
>>>
False
>>> set1 = {1,2,3}
>>>
>>>
True
>>>
False
>>>
>>>
>>> d1 == d2 #字典是无序的,key值是唯一的
True
>>> d1 is d2
False
比较运算符==和身份运算符is到底有什么不同?
在Python中,一切事物都是对象,对象有3个基本元素:id、value、type。比较运算符==判断的是value是否相同;身份运算符is判断的是id(地址)是否相同。
>>>
>>>
>>>
True
>>>
61223680
>>>
'0x3a63300'
>>>
61223800
>>>
'0x3a63378'
>>>
False
>>>
>>>
>>>
267241600
>>>
267241600
>>>
True
变量的value可以用比较运算符==判断;变量的id可以用身份运算符is判断;那变量的type怎么判断呢?
方法1:使用type()函数
>>> s = 'hello'
>>>
<class 'str'>
>>>
True
方法2:使用isinstance()函数
>>> s = 'hello'
>>>
<class 'str'>
>>>
True
>>>
>>>
True
3.1.7位运算符
(1)运算符&:将二进制操作数1和操作数2按位与,然后返回数值。
(2)运算符|:将二进制操作数1和操作数2按位或,然后返回数值。
(3)运算符^:将二进制操作数1和操作数2按位异或,然后返回数值。
(4)运算符~:将二进制操作数按位取反,然后返回数值。
(5)运算符<<:将二进制操作数按位左移,然后返回数值。
(6)运算符>>:将二进制操作数按位右移,然后返回数值。
>>>
>>>
>>>
'0b1110'
>>>
'0b11'
>>>
'0b10'
>>>
'0b1111'
>>>
'0b1101'
>>>
'-0b1111'
>>>
'-0b100'
>>>
'0b11'
>>>
'0b1100'

3.1.8运算符优先级

序号

运算符

描述

1

()

加括号后表示优先执行

2

**

指数运算

3

~

按位取反

4

*  /  %  //

乘、除、取余、取整除优先级相等

5

+  -

加、减

6

<<  >>

左移、右移位运算符,优先级相等

7

&

按位与

8

^  |

按位异或、按位或

9

==  !=  >  >=  <  < =

比较运算符

10

is    is not

身份运算符

11

in    not in

成员运算符

12

not  and  or

逻辑运算符,优先级not > and > or

13

=  +=  -=  *=  /=  %=  //=  **=

赋值运算符

 

上表中运算符优先级从高到低,需要注意的是逻辑运算符的优先级:not > and > or。

>>>

3

在表达式的运算中,若运算符优先级相同,则执行顺序是从左向右。

我看了下网上的运算符优先级表,感觉不怎么正确。我自己重新做了一个运算符优先级表。