if语句中的条件有多种形式,条件表达式是很有意思的一部分。

比较运算符

条件表达式中最基础的是比较运算符,用于进行比较,返回布尔值。

表达式

作用

x == y

x等于y

x < y

x小于y

x > y

x大于y

x >= y

x大于等于y

x <= y

x小于等于y

x != y

x不等于y

x is y

x和y是同一个对象

x is not y

x和y不是同一个对象

x in y

x是y中的成员

x not in y

x不是y中的成员

下面详细介绍其中的一些需要注意的运算符

(一)相等运算符==

相等运算符用于确认两个对象是否相等,用==表示

'python'
== 'python'
True
'python'
== 'java'
False
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

注意,这里使用的是两个等号。不能使用一个等号。一个等号属于赋值语句,用于赋值。

'python'
= 'python'
SyntaxError:
cannot assign to literal here. Maybe you meant '==' instead of '='?
1 =
1
SyntaxError:
cannot assign to literal here. Maybe you meant '==' instead of '='?
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

(二)相同运算符is

is运算符检查两个对象是否相同,

a =10
b =20
a
is b
False
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

变量a赋值为10,变量b赋值为20,使用is判断是否为同一对象,返回False。

(三)is与==的区别

先看如下的示例

a =b = [1,2,3]
c =[1,2,3]
a== b
True
a== c
True
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

a、b、c三个变量的值为列表[1、2、3],a、b采用链式赋值。使用相等运算符判断变量是否相等,可以看到a、b相等,a、c不等。

此时再用相同运算符is判断三者,结果如下:

a =b = [1,2,3]
c =[1,2,3]
a is b
True
a is c
False
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

a is b的结果是True,但a is c的结果是False

为什么会是这样的情况,我们使用id()函数打印内存地址

id(a)
1806857559104
id(b)
1806857559104
id(c)
1806857476992
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

a、b采用链式赋值,指向的是同一个列表对象,内存地址相同,变量b指向的是另一个列表对象,所以是不同的内存地址。

在上述例子中,a、b、c三个变量的值都相同(三者的值都为[1,2,3]),所以使用==进行判断,返回结果为True。

a、b两个变量采用链式赋值,指向同一个对象,使用is进行判断,a is b结果为True,但a is c结果为False。

从这里我们可以看到is和==的区别。==用来判断变量的值是否相同,is用来判断变量指向的对象是否相同。

(四)in成员资格运算符

in用于检查特定值是否在序列中。

def
test():
    name = input('请输入你的名字:
    if '中' in name:
        print('你的名字包含中')
    else:
        print('你的名字没有中')

test()
请输入你的名字: 张三
你的名字没有中
test()
请输入你的名字: 张中
你的名字包含中
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

这个例子中,使用了in运算符,判断输入的字符中有没有包含“中”字。