基本运算符
一、算术运算符
python支持的算数运算符与数学上计算的符号使用是一致的
以下假设变量a为10,变量b为20:
| 运算符 | 描述 | 实例 |
|---|---|---|
| + | 加:两个对象相加 | a + b 输出结果 30 |
| - | 减:得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
| * | 乘:两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
| / | 除:x除以y | b / a 输出结果 2 |
| % | 取模:返回除法的余数 | b / a 输出结果 0 |
| ** | 幂:返回x的y次幂 | a ** b 为10的20次方,输出结果为100000000000000000000 |
| // | 取整除:返回商的整数部分(向下取整) | >>> 9//2 得4。>>>-9//2 得-5。 |
ar = 20
vr = 10
ark = ar + vr # 加法
print(ark)
ark = ar - vr # 减法
print(ark)
ark = ar * vr # 乘法
print(ark)
ark = ar / vr # 除法
print(ark)
ark = ar % vr # 取模(余数)
print(ark)
#修改变量
ar = 2
vr = 3
ark = ar ** vr # 幂(次方)
print(ark)
ark = ar // vr # 整除(向下取整)
print(ark)
二、比较运算符
比较运算用来对两个值进行比较,返回的是布尔值True或False
以下假设变量a为10,变量b为20:
| 运算符 | 描述 | 实例 |
|---|---|---|
| == | 等于:比较对象是否相等 | (a == b) 返回 False。 |
| != | 不等于:比较对象是否不相等 | (a != b) 返回 True。 |
| > | 大于:返回x是否大于y | (a > b) 返回 False。 |
| < | 小于:返回x是否小于y。所有比较运算符返回1表示真。返回0表示假。这分别与特殊的变量True和False等价。 | (a < b) 返回 True。 |
| >= | 大于等于:返回x是否大于等于y | (a >= b) 返回 False。 |
| <= | 小于等于:返回x是否小于等于y | (a <= b) 返回 True。 |
ar = 3
vr = 2
print(ar == vr) # 比较相等情况 不等返回False 相等返回Ture
print(ar != vr) # 比较不等情况 不等返回Ture 相等返回False
print(ar > vr) # 比较大于情况 大于返回Ture 小于则返回False
print(ar < vr) # 比较小于情况 小于返回Ture 大于则返回False
print(ar >= vr) # 比较大于等于情况 小于返回False 大于则返回Ture
print(ar <= vr) # 比较小于等于情况 大于返回False 小于则返回Ture
三、赋值运算符
ython语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。
1.增量赋值
以下假设变量a为10,变量b为20:
| 运算符 | 描述 | 实例 |
|---|---|---|
| = | 简单的赋值运算符 | c = a + b将a + b 的运算结果赋值为c |
| += | 加法赋值运算符 | c += a 等效于 c = c + a |
| -= | 减法赋值运算符 | c -= a 等效于 c = c - a |
| *= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
| /= | 除法赋值运算符 | c /= a 等效于 c = c / a |
| %= | 取模赋值运算符 | c %= a 等效于 c = c % a |
| **= | 幂赋值运算符 | c ** a 等效于 c = c ** a |
| //= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
ar = 10
vr = 3
ar += vr # ar = ar + vr (加法)
print(ar)
ar -= vr # ar = ar - vr (减法)
print(ar)
ar *= vr # ar = ar * vr (乘法)
print(ar)
ar /= vr # ar = ar / vr (除法)
print(ar)
ar %= vr # ar = ar % vr (取余数)
print(ar)
ar **= vr # ar = ar ** vr (次方)
print(ar)
ar //= vr # ar = ar // vr (取整,向下取)
print(ar)
2.链式赋值
我们想把同一个值同时赋值给多个变量名。链式赋值指的是可以用一行代码搞定这件事
a=b=c = 10
print(a,b,c) # 把同一个变量值赋予给多个变量名
3.交叉赋值
把两个变量的值交叉互换
ar = 10
vr = 20
'''方法一:'''
#多弄一个变量出来
test = ar
ar = vr
vr = test
print(ar,vr)
'''方法二:'''
ar,vr = vr,ar
print(ar,vr)
4.解压赋值
我们想把列表中的多个值取出来依次赋值给多个变量名
name = ['chen','vsk','hack','watt']
'''方法一:'''
name1 = name[0]
name2 = name[1]
name3 = name[2]
name4 = name[3]
print(name1,name2,name3,name4)
'''方法二:'''
a,b,c,d = name """数据量一定要匹配,多一个不行,少一个也不行"""
print(a,b,c,d)
'''方法三:'''
# 这个方法是取n个变量的时候
a,*_,b = name # *_:把列表里面没有变量赋予的值都交给*后面的变量命名并且以列表的形式返回
print(a,*_,b)
print(*_)
四、逻辑运算符
逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False
关键字: and or not (连接多个值)
and:与---------->and两边的值必须都是True的时候,整体结果才是True
or: 或者---------->or两边的值只要有一个是真,整体结果就是真
not: 非,取反-------->not取反
以下假设变量a为10,变量b为20:
| 运算符 | 逻辑表达式 | 描述 | 实例 |
|---|---|---|---|
| and | x and y | 布尔“与”:如果x为False,x and y返回False,否则它返回y的计算值。 | (a and b)返回 20 |
| or | x or y | 布尔“或”:如果x是非0,它返回x的计算值,否则它返回y的计算值。 | (a or b)返回 10 |
| not | not x | 布尔“非”:如果x为True,返回False。如果x为False,它返回True | not(a and b)返回 False |
#1、三者的优先级关系:not>and>or,同一优先级默认从左往右计算。
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False
#2、最好使用括号来区别优先级,其实意义与上面的一样
'''
原理为:
(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
(2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
(3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
'''
>>> (3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3
False
#3、短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回
>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
我们用括号来明确一下优先级
>>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
短路: 0 '' 'abc'
假 假 真
返回: 'abc'
1.可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。
2 > 1 and 1 != 1 and True and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为False
2.可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False。
2 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True
五、成员运算符
关键字:in(在) not in(不在)
| 运算符 | 描述 | 实例 |
|---|---|---|
| in | 如果在指定的序列中找到值返回True,否则返回False | x在y序列中,如果x在y序列中返回True |
| not in | 如果在指定的序列中没有找到值返回True,否则返回False | x不在y序列中,如果x不在y序列中返回True |
name_list = ['Chen','tony','jack']
print('tom' in name_list) #tom不在name_list里面故返回False
print('tom' not in name_list) #tom不在name_list里面,但是not in是反着来的,故返回True
六、身份运算符
用于比较两个对象的存储单元。关键字:is(比较的是内存地址,id值) ==(比较值的)
| 运算符 | 描述 | 实例 |
|---|---|---|
| is | is 是判断两个标识符是不是引用自己的一个对象 | x is y,类似id(x) == id(y),如果引用的是同一个对象则返回True,否则返回False |
| is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y,类似id(a) != id(b)。如果引用的不是同一个对象则返回结果True,否则返回False |
name = 'chen'
name1 = 'chen'
print(name is name1) # (这里涉及到了python的底层优化,如果值太小的话就是共用的id)
print(name == name1)
name = ['chen','vsk','hack','watt','tony','nvwl']
name1 = ['chen','vsk','hack','watt','tony','nvwl']
print(name is name1)
print(name == name1)
'''内存地址相同的值一定相同,值相同的内存地址不一定相同'''
七、Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
| 运算符 | 描述 |
|---|---|
| ** | 指数 (最高优先级) |
| ~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
| * / % // | 乘,除,取模和取整除 |
| + - | 加法减法 |
| >> << | 右移,左移运算符 |
| & | 位 ‘AND’ |
| ^ | 位运算符 |
| <= < > >= | 比较运算符 |
| <> == != | 等于运算符 |
| = %= /= //= -= += *= **= | 赋值运算符 |
| is is not | 身份运算符 |
| in not in | 成员运算符 |
| not and or | 逻辑运算符 |
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d #( 30 * 15 ) / 5
print(e)
e = ((a + b) * c) / d # (30 * 15 ) / 5
print(e)
e = (a + b) * (c / d); # (30) * (15/5)
print(e)
e = a + (b * c) / d; # 20 + (150/5)
print(e)
2万+

被折叠的 条评论
为什么被折叠?



