谁能解释下 python3.7 的这点小差别

python_tuple.png

对于上图的运行结果,可能大家会和我一样有点小惊讶

  1. 对于list不会出现差异
  2. 分行赋值也不会出现 a is b == True 的结果

python_tuple2.png

我的理解是解释器做了一点优化,对作为不可变类型的tuple在一行代码内不会重复创建。

但这么做真的好吗,虽然从实用角度,并没有引出什么坑,但还是有损一个语言的逻辑自洽的。作为强迫证不认可,虽然python其实已经不少这类小缺口了。

阅读 316
评论
    5 个回答

    "Fluent Python" 有一个小章节 "Tricks Python Plays with Immutables" 写过这类问题。

    作者说,这些解释器的优化,并没有文档明示,不同版本也可能有不同的做法。只要你的代码不依赖这些优化特性,其实不会影响我们对python的使用。所以权当了解,不必纠结了。