On Tue, Feb 14, 2017 at 11:01 PM, Alan Gauld via Tutor <tutor@python.org> wrote: > To compute it if you don't know x in advance then yes, > use something like > > value = 10**x > > But if you know the value in advance you can write it in > a more compact form as: > > value = 1e5 # or 3e7 or whatever...
10**5 is an int and 1e5 is a float. This could lead to a significant loss of precision depending on the calculation. For example: >>> x = 10**5 * 1234567890123456789 >>> y = 1e5 * 1234567890123456789 >>> x - y 16777216.0 Replacing 10**5 with 100000 is a compile-time optimization (constant expression folding), so you needn't worry about manually optimizing it. For example: >>> compile('10**5', '', 'exec').co_consts (10, 5, None, 100000) The compiled bytecode refers to the pre-computed constant: >>> dis.dis(compile('10**5', '', 'exec')) 1 0 LOAD_CONST 3 (100000) 3 POP_TOP 4 LOAD_CONST 2 (None) 7 RETURN_VALUE _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor