Re: Question about output different with command dis.dis(code)
On Thu, 26 Nov 2015 08:02 pm, fl wrote: > Hi, > > I see the following from a previous post: > > > Python 1.5.2 (#1, Aug 27 2012, 09:09:18) [GCC 4.1.2 20080704 (Red Hat > 4.1.2-52)] on linux2 > Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam import dis code = compile("(1, 2, 3)", "", "eval") dis.dis(code) > 0 SET_LINENO 0 > 3 LOAD_CONST 0 (1) > 6 LOAD_CONST 1 (2) > 9 LOAD_CONST 2 (3) > 12 BUILD_TUPLE 3 > 15 RETURN_VALUE This output is from Python 1.5, which is about 20 years old or so, and long obsolete. > When I run the above three line code, I get the following: > > dis.dis(code) > 1 0 LOAD_CONST 3 ((1, 2, 3)) > 3 RETURN_VALUE This output is (probably) from Python 2.7, which is much more recent. The byte-code compiler is much smarter now than in old versions of Python. By the way, this is a really good question! I especially like the fact that you tried running the code for yourself first. -- Steven -- https://mail.python.org/mailman/listinfo/python-list
Question about output different with command dis.dis(code)
Hi, I see the following from a previous post: Python 1.5.2 (#1, Aug 27 2012, 09:09:18) [GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import dis >>> code = compile("(1, 2, 3)", "", "eval") >>> dis.dis(code) 0 SET_LINENO 0 3 LOAD_CONST 0 (1) 6 LOAD_CONST 1 (2) 9 LOAD_CONST 2 (3) 12 BUILD_TUPLE 3 15 RETURN_VALUE When I run the above three line code, I get the following: dis.dis(code) 1 0 LOAD_CONST 3 ((1, 2, 3)) 3 RETURN_VALUE on my Windows 7 PC Canopy. Are there something, my input or Python difference make the output different? Thanks, -- https://mail.python.org/mailman/listinfo/python-list
Re: Question about output different with command dis.dis(code)
flwrites: > Python 1.5.2 (#1, Aug 27 2012, 09:09:18) [GCC 4.1.2 20080704 (Red Hat > 4.1.2-52)] on linux2 The context of the post was discussing the behavior of a very old version of python. I'm not sure how you missed this. > When I run the above three line code, I get the following: Further down in the same post you saw, he mentioned that modern versions of python do this, and showed the same output that you have. -- https://mail.python.org/mailman/listinfo/python-list
Re: Question about output different with command dis.dis(code)
On Thu, Nov 26, 2015 at 8:02 PM, flwrote: > Are there something, my input or Python difference > make the output different? Anything involving the disassembly of Python code depends heavily on internal interpreter details. You just quoted something showing that ancient versions of Python did at run-time what current versions have optimized to a compile-time construction (and thus the quick LOAD_CONST instead of the full work of building the tuple). If you switch to PyPy, Jython, IronPython, or some other implementation of the language, the byte code may be completely different - or may not be available at all. Using dis.dis is a great way of finding out what is actually happening, but it's never something you can depend on the stability of. ChrisA -- https://mail.python.org/mailman/listinfo/python-list