1
Leigg 2018-10-16 19:47:11 +08:00 via iPhone
可读性。
|
2
beny2mor 2018-10-16 19:47:51 +08:00
比如 0 和[]和{}都不会通过 if foo
|
3
menc 2018-10-16 19:48:38 +08:00
|
4
Wincer 2018-10-16 19:49:39 +08:00 via Android
文档里写了: In the context of Boolean operations, and also when expressions are used by
control flow statements, the following values are interpreted as false: False, None, numeric zero of all types, and empty strings and containers (including strings, tuples, lists, dictionaries, sets and frozensets). All other values are interpreted as true. (See the __nonzero__() special method for a way to change this.) |
6
dangoron 2018-10-16 20:01:03 +08:00 via Android
取决于 query 的内容,像我用 numpy 的话肯定是用 if quey is not None。
你可以试试 ``` query = numpy.arrange(3) if query: print(1) ``` 会报错 |
7
Qzier 2018-10-17 22:53:42 +08:00 via iPhone
None 是单例模式,永远只有一个 None,所以 is None 可以判断是否返回为空。而 if query 则是判断布尔值是否为 True
|
8
vipppppp 2018-10-19 09:16:03 +08:00 1
看到这个语句,很像 sqlalchemy(flask-sqlalchemy)?
如果是的话,那么实际上 if foo is not None 和 if foo 达到的效果是一样的 但显然第一种表达更为清晰,毕竟 sqlalchemy 返回的要么是个 orm 对象要么是 None 一般我自己不喜欢使用 if foo 这样的表达,毕竟自己敲代码要清楚返回的值是什么(类型),是 None,是 0 还是"",还是[],{} |