天天看点

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

一、算数运算符

Python中算术运算符用来组织整型和浮点型数据的算数运算,按照参加运算的操作数的不同分为一元运算符和二元运算符。

1、一元运算符:Python中一元运算符有多个,但算数一元运算符只有一个,即-,-是取反运算符。例如:-x是x的取反运算。

2、二元运算符:如下表:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

代码演示:

a = 3
b = 2
c = 'hello '
d = 'world'
print(-a)
print(a + b)
print(c + d)
print(a - b)
print(a * b)
print(c * a)
print(a / b)
print(a % b)
print(a ** b)
print(a // b)

           

结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

二、关系运算符

关系运算符是比较两个表达式大小关系的运算,它的结果是布尔类型数据。

具体运算符见下表:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

代码演示:

a = 3
b = 2
c = 'hello '
d = 'world'
e = [1, 2]
f = [1, 2]
print(a == b)
print(a != b)
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
print(c == d)
print(c != d)
print(c > d)
print(c < d)
print(e == f)
print(e != f)

           

结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

三、逻辑运算符

逻辑运算符对布尔类型变量进行运算,其结果也是布尔类型

运算符见下表:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

代码演示:

a = 1
b = 2
i = 1
if a > b or i == 1:
    print("或运算为:真")
else:
    print("或运算为:假")
if a > b and i == 1:
    print("与运算为:真")
else:
    print("与运算为:假")
print("a > 0为:", a > 0)
print("not a > 0为:", not a > 0)

           

结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

四、位运算符

位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数据。

运算符见下表:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

代码演示:

a = 1357
b = 1234
c = bin(a)
d = bin(b)
print(c, type(c))
print(d, type(d))
print("~a = {0}".format(~a))
# ~a = -(a+1)
print("a & b = {0}".format(a & b))
# 位与运算,只有对应位都为1时,这一位才为1,否则为0
print("a | b = {0}".format(a | b))
# 位或运算,只有对应位都为0时,这一位才为0,否则为1
print("a ^ b = {0}".format(a ^ b))
# 位异或运算,只有对应位互不相同时,这一位才为1,否则为0
print("b >> 2 = {0}".format(b >> 2))
# 右移位运算,低位移除,高位补0;右移n位,相当于操作数除以2 ** n
print("b << 2 = {0}".format(b << 2))
# 左移位运算,高位移除,低位补0;左移n位,相当于操作数乘以2 ** n

           

结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

五、赋值运算符

赋值运算符只是一种简写,一般用于变量自身的变化。算术运算符和位运算符中的二元运算符都有对应的赋值运算符。见下表:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

代码演示:

a = 1357
b = 1234
a += b
print(a)
b <<= 2
print(b)

           

结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

六、其他运算符

先介绍两个“测试”运算符

1、同一性测试运算符:

  • 与“ == ”运算符类似,不同的是,“ == ”是测试两个对象内容是否相同。
  • 同一性测试运算符有两个:is 和 is not,is 是判断是同一对象,is not 是判断不是同一对象。

代码演示:

class N:
    def __init__(self, name):
        self.name = name


n1 = N('Tony')
n2 = N('Tony')
print(n1 == n2)
print(n1 is n2)
print(n1 != n2)
print(n1 is not n2)

           

结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

解释:

n1 == n2,返回结果为False,是因为没有告诉它比较规则是什么,比较的内容是什么,需要在定义类时重写-eq-方法;

n1 is n2,返回结果为False,是因为这里实例化了两个N对象,所以n1和n2是不同对象。

代码修改:

class N:
    def __init__(self, name):
        self.name = name

    def __eq__(self, other):
        if self.name == other.name:
            return True
        else:
            return False


n1 = N('Tony')
n2 = N('Tony')
print(n1 == n2)
print(n1 is n2)
print(n1 != n2)
print(n1 is not n2)

           

修改结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

2、成员测试运算符:

  • 成员测试运算符可以测试在一个序列对象中是否包含某一个元素
  • 成员测试运算符有两个:in 和 not in,in 是测试是否包含某一个元素,not in 是测试是否不包含某一个元素。

代码演示:

a = 'Hello'
b = [1, 2, 3]
print('H' in a)
print("h" not in a)
print(2 in b)
print(3 not in b)

           

结果:

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

七、运算符优先级

优先级大体顺序从高到低:算数运算符—>位运算符—>关系运算符—>逻辑运算符—>赋值运算符。

具体见下表:(从上到下优先级从高到低,同一行优先级相同)

Python基础学习——运算符(主讲:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符,运算符优先级)

欢迎参考学习,有错请指证,喜欢的请关注本人博客,不定期更新学习心得,学习笔记。