Python基础 - 使用not简化代码
Python中的 not 是一个逻辑运算符,不仅可以用于布尔值,也可以用于非布尔值,用于非布尔值时,该值会被隐式地转换为布尔值。
具体来讲,if not v 在以下几种情况会返回 True:
- v 是 False。
- v 是 None。
- v 是空容器(如空字符串 ""、空列表 []、空元组 ()、空字典 {} 等)。
- v 是数值类型中的 0 或 0.0。
基于 not 的这种用法,可以在某些时候简化代码。
例如,字符串 my_str 可能的取值有 None、""等,一般判断 my_str 是否有效的方法是:
if my_str is None or my_str == "":
print('my_str is None or empty')
使用 not 进行判断可以写成:
if not my_str:
print('my_str is None or empty')
如果要明确区分出变量是 None、空字符串或空容器等,就不能用 if not v 这种形式进行判断。
关于 not 更多的用法示例如下:
if __name__ == '__main__':
v = False
if not v:
print("v is False") # 会执行这一句
v = None
if not v:
print("v is None") # 会执行这一句
v = ""
if not v:
print("str is empty") # 会执行这一句
v = []
if not v:
print("list is empty") # 会执行这一句
v = ()
if not v:
print("tuple is empty") # 会执行这一句
v = {}
if not v:
print("dict is empty") # 会执行这一句
v = 0
if not v:
print("v is 0") # 会执行这一句
需要注意的是,如果 v 是自定义对象,if not v 的行为取决于该对象的 __bool__ 或 __len__ 方法。