算术运算符
算术运算符是以数值(字面量或变量)作为其操作数,并返回一个单个数值。这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。
#编译相关代码
mas1 = 10
mas2 = 20
#加运算#
print(mas1+mas2)
#减运算#
print(mas1-mas2)
#乘运算#
print(mas1*2)
print(mas2*2)
#除法运算#
print(mas1/mas2)
print(mas1%mas2)
#幂运算*
print(mas1**2)
#向下取整#
print(mas1//mas2)
算术运算符 | 作用 | 实例 |
---|---|---|
+ | 加法运算,将加号两端的数值相加 | >>>print(mas1+mas2) |
- | 减法运算,将减号左端的的数值减去减号右端的数值 | >>>print(mas1-mas2) |
* | 乘法运算, 乘号两端数值相乘或是返回一个被重复若干次的字符串 | >>>print(mas1*2) |
/ | 除法运算 | >>>print(mas1/mas2) |
% | 取模 - 返回除法的余数 | >>>print(mas1%mas2) |
** | 幂运算,返回x的y次幂 | >>>print(mas1**2) |
// | 取整除,返回商的整数部分 | >>>print(mas2//mas1) |
位运算符
链接: 在线进制转换.
位运算符按二进制位对值进行操作,即把数字看作二进制来进行计算的。我们给变量赋值数值是以十进制数的形式赋值。例如mas1 = 10,这个10就是十进制数,转化为二进制数0000 1010。
#选择二进制数赋值给mas1、mas2
mas1 = 0b10101000
mas2 = 0b01010111
#按位与运算,从左到右即高位到低位
#10101000
#01010111
#00000000 //这个是运算结果,与运算左右数值相等则为1,与运算左右两边数值不相等则为0,如1&1=1、1&0=0
print(mas1&mas2) #输出十进制数,如果需要输出二进制就写成(bin(mas1|mas2))
#按位或运算
#10101000
#01010111
#11111111 //这个是运算结果,或运算左右数值只需有一个是1即为1,如1|1=1、1|0=1、0|0=0
print(mas1|mas2)
#按位异或运算
#10101000
#01010111
#11111111 //这个是运算结果,异或运算左右数值都不相等即为1,0^0=0、1^1=0、1^0=1
print(mas1^mas2)
#按位取反
#10101000 //原码,原码的反码是原码按位取反的补码,这个补码返回来求结果
#01010111 //这个是运算结果、按位取反是取相反值
print(~mas1)
#左移
#<<数值,这个数值就是mas1左移位数,通常用0顶替
#10101000左移2位即是101000、后面缺2位即补充2个0,变成(mas1<<2) = 10100000
print(bin(mas1<<2)[4:13])
#右移
print(bin(mas2>>2)[4:13])
位运算符 | 作用 |
---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
I | 按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 |
<< | 运算数的各二进位全部左移若干位,由<<右边的数字指定了移动的位数,高位丢弃,低位补0 |
>> | 把‘>>’左边的运算数的各二进制位全部右移若干位,>>右边的数字指定了移动的位数 |
比较运算符
比较运算符是指可以使用下列运算符比较两个值。当用运算符比较两个值时,结果是一个逻辑值,不是 TRUE(成立) 就是 FALSE(不成立)的运算符号。
#比较大于号两边数值大小,如果左数值大于右数值则结果为TRUE,否则为FALSE
print('1大于2?', 1 > 2)
print('2大于1?',2 > 1)
#比较小于号两边数值大小,如果左数值小于右数值则结果为TRUE,否则为FALSE
print('1小于2?', 1 < 2)
print('2小于1?', 2 < 1)
#比较等号两边数值大小,如果左数值等于右数值则结果为TRUE,否则为FALSE
print('3等于3?', 3 == 3)
print("4等于3?", 4 == 3)
#比较>=两边数值大小,如果左数值大于等于右数值则结果为TRUE,否则为FALSE
print("2*1大于等于2?", 2*1 >= 2)
#比较<=两边数值大小,如果左数值小于等于右数值则结果为TRUE,否则为FALSE
print("2*1小于等于2?", 2*1 >= 2)
#判断!=两端数值是否不相等,不相等结果为TRUE,否则为FALSE
print("2!=1?"2 != 1)
比较运算符 | 作用 |
---|---|
> | 大于运算符,如果>前面的值大于后面的值,则返回结果为TRUE,否则返回 FALSE |
< | 小于运算符,如果<前面的值小于后面的值,则返回结果为TRUE,否则返回 FALSE |
== | 等于运算符,如果==前面的值等于后面的值,则返回结果为TRUE,否则返回 FALSE |
>= | 大于等于运算符,如果>=前面的值大于或等于后面的值,则返回结果为TRUE,否则返回 FALSE |
<= | 小于等于运算符,如果<=前面的值小于等于后面的值,则返回结果为TRUE,否则返回 FALSE |
!= | 不相等运算符,如果!=前面的值不等于后面的值,则返回结果为TRUE,否则返回 FALSE |
is | |
is not |
赋值运算符
赋值运算符是“=”。他的优先级别低于一般的运算符,所以对该运算符往往最后读取。一开始可能会以为它是“等于”,其实不是的。它的作用是将一个表达式的右值赋给左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们用变量作左值,还可以看到,指针和引用也可以作左值。
// An highlighted block
mas1 = 3 #3赋值给mas1
mas2 = 4 #4赋值给mas2
mas3 = mas1 + mas2 #变量mas1与变量mas2相加后赋值给mas3
print(mas3)
各类赋值运算符 | 作用 |
---|---|
= | 赋值运算符,=右边的值赋值给左值(变量、指针、表达式) |
+= | 加法赋值运算符,a+=b等价于a = a +b |
-= | 减法赋值运算符,a-=b等价于a = a -b |
*= | 乘法赋值运算符,a*=b等价于a = a *b |
/= | 除法赋值运算符,a/=b等价于a = a /b |
%= | 取模赋值运算符,a%=b等价于a = a %b |
**= | 幂运算赋值运算符,a**=b等价于a = a **b |
//= | 取整赋值运算符,a//=b等价于a = a //b |
:= | 海象运算符,在表达式内部为变量赋值。 |
海像运算符,下面这个是官方例子:
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
#如果在括号内直接将len(a)赋值给n,系统会报错,如果运用(:=)则无错误。
身份运算符
身份运算符用于 比较 两个对象的 内存地址 是否一致 —— 是否是对同一个对象的引用。
身份运算符 | 解析 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用同一个对象 | a is b,类似于id(a) == id(b) |
is not | is not 是判断两个标识符是不是引用自不同对象 | a is not b |
//id()函数是获取括号内对象的内存地址
a = 10
b =10
print(a is b)
C = [1,2]
D = [1,2]
print(id(C))
print(id(D))
print(C is D)
mas1 = [1,2]
C = mas1
D = mas1
print(id(C))
print(id(D))
print(C is D)
#可以看出 is与is not是根据内容地址进行判断的,而==是根据内容值判断的
成员运算符
判断序列中是否存在相应的值,序列一般表示为字符串、列表、元组等集合:
成员运算符 | 解析 |
---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 |
in not | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
逻辑运算符
逻辑运算符 | 解析 |
---|---|
not | not x,如果x为True则返回false。如果x为False则返回True。 |
and | x and y,如果x为True则返回y值。如果x为False则返回False。 |
or | x or y, 如果x为True则返回x,如果x为False返回y值。 |
运算符优先级
运算符是区分级别的,编译环境优先运算级别高的运算符:
最高到最低优先级数
运算符 | 解析 |
---|---|
** | 优先级数最高 |
~± | 按位翻转 |
*, /, %, // | 乘、除、求余和取整 |
+,- | 加、减 |
>>, << | 右移,左移 |
& | |
^, I | 位运算符 |
<=,<,>,>= | 比较运算符 |
==,!= | 等于运算符 |
=,%=,/=,+=,-=,*=,**= | 赋值运算符 |
is,is not | 身份运算符 |
in, in not | 成员运算符 |
not,and,or | 逻辑运算符 |