购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.7 运算符和优先级

在Python语言中,支持的运算符包括算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符和身份运算符。

2.7.1 算术运算符

Python语言中常见的算术运算符如表2-1所示。

表2-1 算术运算符

【例2.6】使用算术运算符(源代码\ch02\2.6.py)。

x=10
y=12
z=30
#加法运算
a=x + y
print ("a的值为:", a)
#减法运算
a =x - y
print ("a 的值为:", a)
#乘法运算
a=x * y
print ("a 的值为:", a)
#除法运算
a=x / y
print ("a 的值为:",a)
#取模运算
a= x % y
print ("a 的值为:", a)
#修改变量x 、y、z
x=10
y=12
z=x**y
print ("z 的值为:", z)
#整除运算
x=15
y=3
z=x//y
print ("z 的值为:", z)

保存并运行程序,结果如下所示。

a 的值为: 22
a 的值为: -2
a 的值为: 120
a 的值为: 0.8333333333333334
a 的值为: 10
z 的值为: 1000000000000
z 的值为: 5

2.7.2 比较运算符

Python语言支持的比较运算符如表2-2所示。

表2-2 比较运算符

【例2.7】使用比较运算符(源代码\ch02\2.7.py)。

a=16
b=4
# 判断变量 a和b是否相等
if ( a == b ):
   print ("a 等于 b")
else:
   print ("a 不等于 b")
# 判断变量 a和b是否不相等
if ( a != b ):
   print ("a 不等于 b")
else:
   print ("a 等于 b")
# 判断变量 a是否小于b
if ( a < b ):
   print ("a 小于 b")
else:
   print ("a 大于等于 b")
# 判断变量 a是否大于b
if ( a > b ):
   print ("a 大于 b")
else:
   print ("a 小于等于 b")
# 修改变量 a 和 b 的值
a=15;
b=32;
# 判断变量 a是否小于等于b
if ( a <= b ):
   print ("a 小于等于 b")
else:
   print ("a 大于  b")
# 判断变量 b是否大于等于a
if ( b >= a):
   print ("b 大于等于 a")
else:
   print ("b 小于 a")

保存并运行程序,结果如下所示。

a 不等于 b
a 不等于 b
a 大于等于 b
a 大于 b
a 小于等于 b
b 大于等于 a

2.7.3 赋值运算符

赋值运算符表示将右边变量的值赋给左边变量,常见的赋值运算符的含义如表2-3所示。

表2-3 赋值运算符

【例2.8】使用赋值运算符(源代码\ch02\2.8.py)。

a=24
b=8
c=6
#简单的赋值运算
c=a + b
print ("c 的值为:", c)
#加法赋值运算
c += a
print ("c 的值为:", c)
#乘法赋值运算
c *= a
print ("c 的值为:", c)
#除法赋值运算
c /= a
print ("c 的值为:", c)
#取模赋值运算
c=12
c %= a
print ("c 的值为:", c)
#幂赋值运算
a=3
c **= a
print ("c 的值为:", c)
#取整除赋值运算
c //= a
print ("c的值为:", c)

保存并运行程序,结果如下所示。

c 的值为: 32
c 的值为: 56
c 的值为: 1344
c 的值为: 56.0
c 的值为: 12
c 的值为: 1728
c的值为: 576

2.7.4 逻辑运算符

Python支持的逻辑运算符如表2-4所示。

表2-4 逻辑运算符

【例2.9】使用逻辑运算符(源代码\ch02\2.9.py)。

a=12
b=24
#布尔"与"运算
if ( a and b ):
    print ("变量 a 和 b 都为 true")
else:
    print ("变量 a 和 b 有一个不为 true")
#布尔"或"运算
if ( a or b ):
    print ("变量 a 和 b 都为 true,或其中一个变量为 true")
else:
    print ("变量 a 和 b 都不为 true")
# 修改变量 a 的值
a=0
if ( a and b ):
    print ("变量 a 和 b 都为 true")
else:
    print ("变量 a 和 b 有一个不为 true")
if ( a or b ):
    print ("变量 a 和 b 都为 true,或其中一个变量为 true")
else:
    print ("变量 a 和 b 都不为 true")
# 布尔"非"运算
if not( a and b ):
    print ("变量 a 和 b 都为 false,或其中一个变量为 false")
else:
    print ("变量 a 和 b 都为 true")

保存并运行程序,结果如下所示。

变量 a 和 b 都为 true
变量 a 和 b 都为 true,或其中一个变量为 true
变量 a 和 b 有一个不为 true
变量 a 和 b 都为 true,或其中一个变量为 true
变量 a 和 b 都为 false,或其中一个变量为 false

2.7.5 位运算符

在Python中,位运算符把数字看作二进制来进行计算。Python支持的位运算符如表2-5所示。

表2-5 位运算符

【例2.10】使用位运算符(源代码\ch02\2.10.py)。

a=12           # 12 =0000 1100
b=6            # 6= 0000 0110
c=0
#按位与运算
c=a & b;        # 4=0000 0100
print ("c的值为:", c)
#按位或运算
c=a | b;        # 14=0000 1110
print ("c 的值为:", c)
#按位异或运算
c=a ^ b;        # 10=0000 1010
print ("c的值为:", c)
#按位取反运算
c=~a;           # -13=1000 1101
print ("c 的值为:", c)
#左移动运算
c=a << 2;       # 48=0011 0000
print ("c 的值为:", c)
#右移动运算
c=a >> 2;       # 3=0000 0011
print ("c 的值为:", c)

保存并运行程序,结果如下所示。

c的值为: 4
c 的值为: 14
c的值为: 10
c 的值为: -13
c 的值为: 48
c 的值为: 3

2.7.6 成员运算符

Python还支持成员运算符,测试实例中包含了一系列的成员,如字符串、列表、元组。成员运算符包括in和not in,x in y表示若x在y序列中则返回True;x not in y表示若x不在y序列中则返回True。

【例2.11】使用成员运算符(源代码\ch02\2.11.py)。

a ='洗衣机'
b='风扇'
goods=['电视机', '空调', '洗衣机', '冰箱', '电脑' ];
# 使用in成员运算符
if ( a in goods ):
    print ("变量a在给定的列表goods中")
else:
    print ("变量a不在给定的列表goods中")
# 使用not in成员运算符
if ( b not in goods ):
    print ("变量b不在给定的列表goods中")
else:
    print ("变量b在给定的列表goods中")
# 修改变量a的值
a='冷风扇'
if ( a in goods ):
    print ("变量a在给定的列表goods中")
else:
    print ("变量a不在给定的列表goods中")

保存并运行程序,结果如下所示。

变量a在给定的列表goods中
变量b不在给定的列表goods中
变量a不在给定的列表goods中

2.7.7 身份运算符

Python支持身份运算符为is和not is。其中,is判断两个标识符是不是引用自一个对象;is not判断两个标识符是不是引用自不同对象。

【例2.12】使用身份运算符(源代码\ch02\2.12.py)。

a ='风扇'
b='冷风扇'
#使用is身份运算符
if ( a is b):
    print ("a和b有相同的标识")
else:
    print ("a和b没有相同的标识")
#使用not is身份运算符
if ( a not in b ):
    print ("a和b没有相同的标识")
else:
    print ("a和b有相同的标识")
# 修改变量a的值
a='冷风扇'
if ( a is b):
    print ("修改后的a和b有相同的标识")
else:
    print ("修改后的a和b仍然没有相同的标识")

保存并运行程序,结果如下所示。

a和b没有相同的标识
a和b有相同的标识
修改后的a和b有相同的标识

2.7.8 运算符的优先级

下面是Python的运算符,以处理顺序的先后排列。

(1)()、[]、{}。

(2)object。

(3)object[i]、object[1:r]、object.attribute、function()。

“.”符号用来存取对象的属性与方法。下面的示例调用对象t的append()方法,在对象t的结尾添加一个字符"t":

t=["P","a","r","r","o"]
t.append("t")
print(t)

输出结果如下所示。

['P', 'a', 'r', 'r', 'o', 't']

(4)+x、-x、~x。

(5)x**y:x的y次方。

(6)x * y、x / y、x % y:x乘以y、x除以y、x除以y的余数。

(7)x + y、x – y:x加y、x减y。

(8)x << y、x >> y:x左移y位、x右移y位。例如:

x=4
y=x << 2
print(y)

输出结果如下所示。

16

(9)x & y:位AND运算符。

(10)x ^ y:位XOR运算符。

(11)x | y:位OR运算符。

(12)<、<=、>、>=、==、!=、<>、is、is not、in、not in。

in与not in运算符应用在列表(list)上。is运算符检查两个变量是否属于相同的对象。is not运算符则是检查两个变量是否不属于相同的对象。

!=与<>运算符是相同功能的运算符,都用来测试两个变量是否不相等。Python建议使用!=运算符,而不要使用<>运算符。

(13)not。

(14)and。

(15)or、lambda args:expr。

使用运算符时注意下面的事项:

①除法应用在整数时,其结果会是一个浮点数。例如,8/4会等于2.0,而不是2。余数运算会将x / y所得的余数返回来,如7%4 =3。

②如果将两个浮点数相除取余数的话,那么返回值也会是一个浮点数,计算方式是x – int(x / y) * y。例如:

a=7.0 % 4.0
print(a)

输出结果如下所示。

3.0

③比较运算符可以连在一起处理,如a < b < c < d,Python会将这个式子解释成a < b and b < c and c < d。像x < y > z也是有效的表达式。

④如果运算符(operator)两端的运算数(operand),其数据类型不相同,Python就会将其中一个运算数的数据类型转换为与另一个运算数一样的数据类型。转换顺序为:若有一个运算数是复数,则另一个运算数也会被转换为复数;若有一个运算数是浮点数,则另一个运算数也会被转换为浮点数。

⑤ Python有一个特殊的运算符—lambda。利用lambda运算符能够以表达式的方式创建一个匿名函数。lambda运算符的语法如下:

lambda args : expression

args是以逗号(,)隔开的参数列表list,而expression则是对这些参数进行运算的表达式。

例如:

a=lambda x,y:x + y
print (a(3,4))

输出结果如下所示。

7

x与y是a()函数的参数,a()函数的表达式是x+y。lambda运算符后只允许有一个表达式。要达到相同的功能也可以使用函数来定义a,如下所示:

def a(x,y):           #定义一个函数
   return x + y       #返回参数的和
print (a(3,4))

输出结果如下所示。

7

【例2.13】运算符的优先级(源代码\ch02\2.13.py)。

a=10
b=6
c=4
d=2
e=0
e=(a + b) * c / d       #(16 *4 ) / 2
print ("(a + b) * c / d 运算结果为:",  e)
e=((a + b) * c) / d     # (16 *4 ) /2
print ("((a + b) * c) / d 运算结果为:",  e)
e=(a + b) * (c / d);    # (16) * (4/2)
print ("(a + b) * (c / d) 运算结果为:",  e)
e=a + (b * c) / d;      # 10 + (24/2)
print ("a + (b * c) / d 运算结果为:",  e)

保存并运行程序,结果如下所示。 UFTuyo7l/2K60KJFj0njWXLj3P8ojYAh8gGSooxA314yf946HDO/T/X4KPcANug6

(a + b) * c / d 运算结果为: 32.0
((a + b) * c) / d 运算结果为: 32.0
(a + b) * (c / d) 运算结果为: 32.0
a + (b * c) / d 运算结果为: 22.0
点击中间区域
呼出菜单
上一章
目录
下一章
×