1.python 中的空值
我们在开发过程中经常会遇到判断一个对象是否是空值的情况,以便于对于空值情况做一些特殊的处理或者异常判断
那么,python 中的空值是如何定义的?
针对我们常见的 python 类型,如数值型,布尔型,字符类型,列表,字典以及元组等,我们通常会显式的判断,比如:
int_a = 0float_b = 0.0bool_c = Falselist_d = []dict_e = {}tuple_f = ()string_g = ''
if int_a == 0: print('int empty')if float_b == 0.00: print('float empty')if bool_c == False: print('bool empty')if string_g == '': print('string empty') if len(list_d) == 0: print('list empty')
if len(dict_e) == 0: print('dict empty') if len(tuple_f) == 0: print('tuple empty')
# int empty# float empty# bool empty# string empty# list empty# dict empty# tuple empty
复制代码
其实,在 python 中下列值都认为是空值
None
False
任何形式的数值类型零
空的序列,如'', 列表,元组
空的字典
所以判断空值不必要显式,可以有更简便的方式:
if not int_a: print('int empty') if not float_b: print('float empty') if not bool_c: print('bool empty')if not string_g: print('string empty') if not list_d: print('list empty')
if not dict_e: print('dict empty') if not tuple_f: print('tuple empty')
# int empty# float empty# bool empty# string empty# list empty# dict empty# tuple empty
复制代码
2.特殊的空值 None
None 是一个特殊的空值, None 是不等于任何其他类型值,None 有自己类型 NoneTypeNone 判断是通过 is 关键字来判断
如果在 if 判断语句时,None 是等同于 False。
a = Noneb = Noneprint(a == b)print(a == '')print(type(None))
if a is None: print('a is empty')
if not a: print('a is empty')
# True# False# <class 'NoneType'># a is empty# a is empty
复制代码
使用 None 需要特别的注意,除非是显式的赋值 None,否则任何值都不等于 None
list_d = []print(list_d == None)print(list_d is None)print(list_d is not None)# False# False# True
复制代码
所以从另一个角度看,None 不代表其他的空值。
评论