col speed wrote:
On 8 March 2012 18:51, Steven D'Aprano <st...@pearwood.info> wrote:

This makes sense, and is easy to understand. Now for the real boggle:

py> a = 9912346; b = 9912346
py> a is b
True

Can you guess what is going on here?

(Answer will follow later.)

Because it's on the same line and there are 2 variables with the same
int, it gets cached???

Almost correct, but well done.

Yes, the trick is that they are on the same line.

But you're *almost* correct, because the value doesn't actually gets cached. It only gets re-used in the context of that one line. If you then follow with a second line using the same 9912346, it gets a different ID.


All of these details are implementation tricks. They are subject to change without notice, and the exact rules are not documented anywhere (except perhaps in the source code) so there is no language promise that they will apply. But they are interesting little tricks nevertheless.


--
Steven

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to