python2.7 None < 5 return True, python3 就直接报错了

2021-06-17 22:46:12 +08:00
 wuwukai007
x = {'q2':2}
if x.get('q1',None) < 5:
  # todo

字典取值 默认值 None,代码竟然没报错,还到 todo 里面执行了!

1425 次点击
所在节点    Python
3 条回复
dreampuf
2021-06-17 23:20:31 +08:00
先用 `variable is None` 判断。`dict.get` default 填 None 是坑。Python2 不同类型比较按照类型名称字符大小比较,'i'nt 总是小于 'S'tr 。其中 `None` 是最小的类型,比任何类型都小。

https://stackoverflow.com/questions/8961005/comparing-none-with-built-in-types-using-arithmetic-operators
LeeReamond
2021-06-17 23:23:19 +08:00
@dreampuf 感觉不是一个良好的设计,说不出什么逻辑联系,只能当做特例来记,也不起到多少方便的作用
aijam
2021-06-17 23:26:56 +08:00

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

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

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

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

© 2021 V2EX