布尔类型
- 布尔值只有两个值:True和False,可以将这两个值翻译成“真”和“假”。
None,0,"",(),[],{}解释成布尔值中的False - 在python语言底层,会将布尔值True看作1,将布尔值False看作0,也可以直接将True和False当成1和0用,所以True + False + 20的计算结果为21。
- 另外可以拥bool函数将其他类型的值转换为布尔类型的值
bool("") >>>> False
bool(0) >>>> False
bool([]) >>>> False
bool(None) >>>> False
bool("Hello") >>>> True
可以看到,"",0,[],None会默认为False的值,通过bool函数的转换,会变成真正的布尔值。不过这些值是不能直接和布尔值比较的,例如,不能直接使用“[] == False”,正确的做法是先用bool函数将其转为布尔值,然后在比较:
print([] == False) # False
print([] == True) # False
print(bool([]) == False) # True
is、is not、==、in、not in
- 用于判断两个值是否相等,需要使用“==”运算符,也就是两个等号
- 用于判断两个对象是否相等,需要使用is和is not运算符
- 用于判断某个值是否属于一个容器,需要使用in和not in运算符
x = y = [1,2,3]
z = [1,2,3]
k = 1
print(x == y) # True
print(x == z) # True
print(x is y) # True
print(x is z) # False
print(k in x) # True
print(4 in x) # False
断言assert
断言只要不满足条件就会直接抛出异常。只要是监测程序在某个地方是否满足条件,如果不满足条件,应该及时通知开发人员,而不是将这些bug隐藏起来,直到关键的时刻再崩溃。
value = 30
assert 10 <value < 20, 'value值必须在10~20'
Traceback (most recent call last):
File "/Users/yanyan/Desktop/test.py", line 2, in <module>
assert 10 <value < 20, 'value值必须在10~20'
AssertionError: value值必须在10~20