[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

On Fri, Jul 7, 2017 at 8:41 AM, Nathan Ernst <nathan.ernst at gmail.com> wrote: > Looks like single expression statements are handled a bit differently than > multiple expression statements: > > Python 3.5.2 (default, Nov 17 2016, 17:05:23) > [GCC 5.4.0 20160609] on linux > Type "help", "copyright", "credits" or "license" for more information. >>>> n = 4000; m = 4000; n is m > True >>>> n = 4000 >>>> m = 4000 >>>> n is m > False It actually has to do with units of compilation. In the first example, all three statements are compiled together and the constants are optimized to the same object. In the second example, because you're testing this in the REPL they're compiled at different times and since 4000 is larger than what CPython will intern, you end up with different objects. If however, you take the second example and gather it into a function, you'll get the compile-time optimization again: >>> def f(): ... n = 4000 ... m = 4000 ... return n is m ... >>> f() True

- Prev by Date:
**About the implementation of del in Python 3** - Next by Date:
**Check Python version from inside script? Run Pythons script in v2 compatibility mode?** - Previous by thread:
**About the implementation of del in Python 3** - Next by thread:
**About the implementation of del in Python 3** - Index(es):