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
注意,这里使用的是两个等号。不能使用一个等号。一个等号属于赋值语句,用于赋值。
'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 '='?
is运算符检查两个对象是否相同,
a = 10
b = 20
a is b
False
变量a赋值为10,变量b赋值为20,使用is判断是否为同一对象,返回False。
先看如下的示例
a = b = [1,2,3]
c = [1,2,3]
a == b
True
a == c
True
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
a is b的结果是True,但a is c的结果是False
为什么会是这样的情况,我们使用id()函数打印内存地址
id(a)
1806857559104
id(b)
1806857559104
id(c)
1806857476992
a、b采用链式赋值,指向的是同一个列表对象,内存地址相同,变量b指向的是另一个列表对象,所以是不同的内存地址。
在上述例子中,a、b、c三个变量的值都相同(三者的值都为[1,2,3]),所以使用==进行判断,返回结果为True。
a、b两个变量采用链式赋值,指向同一个对象,使用is进行判断,a is b结果为True,但a is c结果为False。
从这里我们可以看到is和==的区别。==用来判断变量的值是否相同,is用来判断变量指向的对象是否相同。
in用于检查特定值是否在序列中。
def test():
name = input('请输入你的名字: ')
if '中' in name:
print('你的名字包含中')
else:
print('你的名字没有中')
test()
请输入你的名字: 张三
你的名字没有中
test()
请输入你的名字: 张中
你的名字包含中
这个例子中,使用了in运算符,判断输入的字符中有没有包含“中”字。