欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Python]运算符(算数,赋值,比较)

程序员文章站 2024-03-15 14:50:06
...

运算符

  1. 算术运算符
  2. 赋值运算符
  3. 比较运算符
  4. 布尔运算符
  5. 位运算符

算术运算符

前五个为标准算术运算符

  1. 加+
  2. 减-
  3. 乘*
  4. 除/:运算结果变为float型
  5. 整除//:运算结果只保留整数部分
  6. 取余%:即模运算10≡ 1mod(3)
  7. 幂**
print(1+1)
print(1-1)
print(1*9)
print(9/3)
print(10/3)
print(10//3)
print(10%3)
print(10**3)

运行结果如图:
[Python]运算符(算数,赋值,比较)
要注意的是 :在整除运算和取余运算中,当两个数为一正一负时
整除运算:

print(10//3)
print(-10//3)
print(10//-3)

结果如下:
[Python]运算符(算数,赋值,比较)
即-(10/3)=-3.3…要向下取整
取余运算:

print(10%3)
print(-10%3)
print(10%-3)

结果如下:
[Python]运算符(算数,赋值,比较)
在一正一负两个数字进行取余运算时,需要遵循计算公式:余数=被除数-除数*商
即-10%3=-10-3*(-4)和10%-3=10-(-3)*(-4)。这里的商即整除的结果。

赋值运算符

赋值运算符的执行顺序为从右到左。

a=1+2
print(a)

结果为
[Python]运算符(算数,赋值,比较)
而不是1。
赋值运算符支持:

  1. 链式赋值
  2. 参数赋值
  3. 系列解包赋值

链式赋值:

b=c=d=10
print(b,c,d)
print(id(b),id(c),id(d))

[Python]运算符(算数,赋值,比较)
可以看出它们指向了同一内存地址。

参数赋值:
参数赋值包括+=,-=,*=,/=,//=,%=

e=5
e+=6   #e=e+6
print(e)
e-=4   #e=e-4
print(e)
e*=2   #e=e*2
print(e)
e/=3   #e=e/3
print(e)
e//=2   #e=e//2
print(e)
e%=2   #e=e%2
print(e)

运算结果如下:
[Python]运算符(算数,赋值,比较)
系列解包赋值:

f,g,h=1,2,3#
print(f,g,h)

结果如下:
[Python]运算符(算数,赋值,比较)

要注意的是:等号左右侧的个数要相同。
赋值结果会与位置一一对应,因此系列解包赋值可以帮助我们在不需要中间变量的情况下进行值的互换。

i,j=10,20
print(i,j)
print('不需要中间变量的交换')
i,j=j,i
print(i,j)

结果如下:
[Python]运算符(算数,赋值,比较)
可以有效减少参数交换频繁时的代码量。

比较运算符

对变量或表达式的结果进行大小、真假等比较。返回结果为bool值。
比较运算符包括:

  1. <,<=,>,>=,=,!=
  2. 对象value的比较 ==
  3. 对象id的比较 is / is not即id相同或不相同
a,b=1,2
print('a大于b吗?',a>b)
print('a小于b吗?',a<b)

返回结果如图:
[Python]运算符(算数,赋值,比较)
对象value的比较使用==,对象id的比较使用is

c=10
d=10
print('c==d?',c==d)
print('c is d?',c is d)
lst1=[11,12,13]
lst2=[11,12,13]
print('lst1==lst2?',lst1==lst2)
print('lst1 is lst2?',lst1 is lst2)

结果如图:
[Python]运算符(算数,赋值,比较)
在第一个比较中,内存分配了一块用来存放10这个值,当d也赋值为10时,直接让d也指向了已有的10.
而在第二个比较中,因为是两个不同的list,所以内存分配了两个不同的块用来存放它们,因此is的比较返回的是False。而只比较值的==返回了True。
用id来看看他们的内存地址会更为直观:

print(id(c),id(d))
print(id(lst1),id(lst2))

结果如图:
[Python]运算符(算数,赋值,比较)

相关标签: python python