title: Strange assignment mechanism with the walrus operator
body: <p>As we know, integers are singletones for values in [-5...256], but</p>
  <pre class="lang-py prettyprint-override"><code>&gt;&gt;&gt;(id(q:=-6) == id(q2:=-6) , id(w:=0) == id(w1:=0), id(e:=600) == id(e1:=600))
  (False, True, True)
  </code></pre>
  <p>If we try assing variables without walrus:</p>
  <pre class="lang-py prettyprint-override"><code>&gt;&gt;&gt;e = 600
  &gt;&gt;&gt;e1 = 600
  &gt;&gt;&gt;id(e) == id(e1)
  False
  &gt;&gt;&gt;id(e), id(e1)
  (1813997325616, 1813997325040)
  </code></pre>
  <p>Can you explain this behavior?</p>