这算不算 python 的小坑?

2016-03-02 15:30:44 +08:00
 haoc

看到这个两行代码,把我吓住了:
Python
if []:
print('False')

竟然没有报类型错误? Python 不是强类型么?
后来查了查 doc , if statement 在这里接受一个 expression 然后会调用 bool().
然后 bool([]) == False,所以没有出现类型错误。 -- 如果理解没错的话

感觉虽然这里没有出现[] == False 的问题但是这种 if [] 还是挺坑的,容易误导人。

4059 次点击
所在节点    Python
41 条回复
waner55
2016-03-03 15:15:16 +08:00
https://www.python.org/dev/peps/pep-0008/#id45
看 sequese

> For sequences, (strings, lists, tuples), use the fact that empty sequences are false.
>
```
Yes: if not seq:
if seq:

No: if len(seq):
if not len(seq):
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/260519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX