代码中经常会有变量是否为None的判别,有三种首要的写法:
第一种是if x is None;
第二种是 if not x:;
第三种是if not x is None(这句这样了解更明晰if not (x is None)) 。
假如你觉得这样写没啥差异,那么你可就要当心了,这儿面有一个坑。先来看一下代码:
在python中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False ,即:
代码如下:
因而在运用列表的时分,假如你想区别x==[]和x==None两种状况的话, 此刻if not x:将会呈现一些显着的反常问题:
或许你是想判别x是否为None,可是却把x==[]的状况也判别进来了,此种状况下将无法区别。
关于习惯于运用if not x这种写法的pythoner,有必要清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判别没有影响才行。
而关于if x is not None和if not x is None写法,很显着前者更明晰,而后者有可能使读者误解为if (not x) is None,因而引荐前者,一起这也是谷歌引荐的风格
定论:
if x is not None是最好的写法,明晰,不会呈现过错,今后坚持运用这种写法。 运用if not x这种写法的条件是:有必要清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判别没有影响才行。