代码中经常有三种判断变量是否为None的方法:第一种是ifxisNone;第二个是ifnotx:;三者是ifnotxisNone(这句话更清楚ifnot(xisNone))。如果你觉得这样写没什么区别,那你就要小心了,这里面有坑。先看代码:>>>x=1>>>notxFalse>>>x=[1]>>>notxFalse>>>x=0>>>notxTrue>>>x=[0]>>>notxFalseinpythonNone,False,空字符串"",0,空列表[],空字典{},空元组()等价于False,即:notNone==notFalse==not''==not0==not[]==not{}==not()所以在使用lists的时候,如果要区分x==[]和x==None,这时候ifnotx:会有问题:>>>x=[]>>>y=None>>>>>>xisNoneFalse>>>yisNoneTrue>>>>>>>>>notxTrue>>>notyTrue>>>>>>>>>notxisNone>>>True>>>notyisNoneFalse>>>可能你想判断x是否为None,但是x==[]的情况也是判断进来的,而在这种情况下不会有区别。对于习惯使用ifnotx的pythoner来说,一定要清楚x等于None、False、空字符串""、0、空列表[]、空字典{}、空元组().影响力就可以了。至于ifxisnotNone和ifnotxisNone,前者显然更清楚,而后者可能会把读者误认为if(notx)isNone,所以推荐前者,这也是推荐的风格结论谷歌:如果x不是None是最好的写法,很清楚不会出错,以后会坚持这种写法。使用ifnotx的前提是:必须清楚x等于None,False,空字符串"",0,空列表[],空字典{},空元组()会有对你的判断没有影响。好的。
