Python if 语句一些注意

# Python中is和==的区别

is当比较的是相同的对象实例时总是返回True。而==则完全决定于__eq__()方法的实现。

>>> class foo(object):
       def __eq__(self, other):
           return True

>>> f = foo()
>>> f == None
True
>>> f is None
False

# "if x is not None" 和 "if not x is None" 有什么区别?

if x 会对x做 nonzero 判断,当 x 为 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组() 的时候都是 False。

因此在使用列表的时候,如果你想区分x==[]和x==None两种情况的话, 此时if not x:将会出现问题.

当你确实要判断一个变量不是 None 的时候,对于if x is not Noneif not x is None写法,很明显前者更清晰,,不会出现错误, 而后者有可能使读者误解为if (not x) is None,因此推荐前者,同时这也是谷歌推荐的风格.

使用if not x这种写法的前提是:必须清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。


参考地址:

  1. python 中 "if x is not None" 和 "if not x is None" 有什么区别?
  2. python代码if not x:if x is not None:if not x is None:使用

--EOF--


>看不到评论?GFW!!!