天天看点

python中的运算符大全

运算符:运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算

python支持的运算符:

  1. 算术运算符
  • 两个对象相加或者相同数据类型的拼接 +

    1+2+False+True

    print(“234”+“123”)

    print([1,2,3,45]+[1,“234”,True,3.14])

    》》》

    4

    “234123”

    [1, 2, 3, 45, 1, ‘234’, True, 3.14]

  • 一个数减去另一个数 -

    1-True

    》》》

  • 两个数相乘或是返回一个被重复若干次的字符串*

    5*False

    print(‘asjkfdhsk我’*2)

    》》》

    asjkfdhsk我asjkfdhsk我

  • 除法/

    3.556/5522

    》》》

    0.0006439695762404926

    5/False

    》》》

    Traceback (most recent call last):

    File “<pyshell#1>”, line 1, in

    ZeroDivisionError: division by zero

    6/3

    》》》

    2.0

  • 返回除法的余数%

    [5%2,‘widjj’]

    》》》

    [1, ‘widjj’]

  • 返回x的y次幂**

    2**6

    》》》

    64

  • 取整除 - 向下取接近除数的整数//

    9//2

    -9//2

    》》》

    4

    -5

2.比较运算符

  • 等于 - 比较对象是否相等==
  • 不等于 - 比较两个对象是否不相等!=
  • 大于 - 返回x是否大于y >
  • 小于 - 返回x是否小于y <
  • 大于等于 - 返回x是否大于等于y >=
  • 小于等于 - 返回x是否小于等于y <=

3.赋值运算符

****= 简单的赋值运算符 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

4.位运算符

按位运算符是把数字看作二进制来进行计算的

python中的运算符大全
a=60#0011 1100
b=13#0000 1101
print(a&b)
print(a|b)
print(a^b)
print(~a)
print(a<<2)
print(a>>2)
           
12#0000 1100
61#0011 1101
49#0011 0001
-61#1100 0011
240#1111 0000
15#0000 1111
           

5.逻辑运算符

python中的运算符大全
a=5
b=7
if (a and b):
    print("a和b都为True")
else:
    print("a和b至少有一个为假")
a=0
if (a and b):
    print("a和b都为True")
else:
    print("a和b至少有一个为假")在这里插入代码片
           
a和b都为True
a和b至少有一个为假
           

**python 中的 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值;

or 也是从左到有计算表达式,返回第一个为真的值;如果都为真或假,则返回最后一个值

在Python中,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了 __ nonzero __ () 或 __ len __ () 方法且方法返回 0 或False,则其实例也被当作False,其他对象均为True

print(1 and 0)
print(1 and True)
print(True and 1)
print(False and 0)
print(0 and False)
print(False or 0)
print(0 or False)
print(-1 or 0)
print(0 or 1)
print(not 0)
print(not '')
print(not 1)
# and:前面为假(0 或者 False)则表达式为假,否则表达式为后面的值;
# or:前面为真(非 0 或者非 False)则表达式为前面的值,否则表达式为后面的值;
           
0
True
1
False
0
0
False
-1
1
True
True
False

           
a=0
b=7
if not a:
    print("a和b都为True")
else:
    print("a和b至少有一个为假")
if not b:
    print("a和b都为True")
else:
    print("a和b至少有一个为假")
           
a和b都为True
a和b至少有一个为假
           
print(1 and 2 or not 1)
print(1 and not 2 or False)
print(not True  and False or False)
print(not False or True and False)
print(True or False and not False)
print(False or not False and 0)
#优先级:not>and>or
           
2
False
False
True
True
0
           

6.成员运算符

python中的运算符大全
a='a'
b='ab'
print(a in b)
print(a not in b)
c=[a,b]
print('a' in c)
print(a not in c)
           
True
False
True
False
           

7.身份运算符

python中的运算符大全
a=5
b=6
c=5
print(id(a))
print(id(b))
print(id(c))
print(a is b)
print(a is c)
print(b is not c)
a=a+1
print(id(a))#变得内存地址与b一样了
print(a is not b)
#python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5,
# 不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 python 中一个变量可以以多个名称访问
           
1468033920
1468033952
1468033920
False
True
True
1468033952
False
           

上述所说的在脚本式编程环境类似pycharm中没有问题。但是在交互式环境中,编译器会有一个小整数池的概念,会把(-5,256)间的数预先创建好,而当a和b超过这个范围的时候,两个变量就会指向不同的对象了,因此地址也会不一样

>>> a=1000
>>> b=1000
>>> id(a)
2138803203856
>>> id(b)
2138803203824
           

is 判断两个对象是否为同一对象, 是通过 id 来判断的; 当两个基本类型数据(或元组)内容相同时, id 会相同, 但并不代表 a 会随 b 的改变而改变。

a=10000
b=10000
list1=['加油','Mr Xiao','0527',a]
list2=['Fighting','肖先生','0527',b]
print(list1[3] is list2[3])
list1=('加油','Mr Xiao','0527',a)
list2=('Fighting','肖先生','0527',b)
print(list1[3] is list2[3])
list1={10:'加油',11:'Mr Xiao',12:'0527',13:a}
list2={10:'Fighting',11:'肖先生',12:'0527',13:b}
print(list1[13] is list2[13])
           
True
True
True
           

8.运算符优先级

python中的运算符大全
a=60#0011 1100
b=13#0000 1101
print(~a-4+1)
print(a|b&a^b)
           
-64
61