How to make Python run as fast (or faster) than Julia

Ned Batchelder ned at nedbatchelder.com
Thu Feb 22 11:55:43 EST 2018


On 2/22/18 11:00 AM, bartc wrote:
> On 22/02/2018 12:03, bartc wrote:
>
>> On the fib(20) test, it suggests using this to get a 30,000 times 
>> speed-up:
>
> BTW while doing my tests, I found you could redefine the same function 
> with no error:
>
> def fred():
>     pass
>
> def fred():
>     pass
>
> def fred():
>     pass
>
> For classes too. I was aware you could reassign a different value to 
> such names, but didn't know this applied to def.
>
> I guess the reason is that 'def' is just another statement, and 
> statements can be conditional, so that you can have several versions.
More importantly, "def x" is just a convenient way to express an 
assignment to x.  It behaves exactly like "x = make_a_function(name='x', 
...)" (where I'm waving my hands about what happens in the ellipsis... 
:)   Just as there is no prohibition on "x = 1; x = 2", there's no 
prohibition on "def x(); def x()"

Lots of Python statements are assignments to names, with precisely the 
same referencing and scoping behaviors as conventional assignment. All 
of these assign to x:

     x = ...
     def x(...)
     def fn(x)
     class x
     import x
     import blah as x
     from blah import x
     for x in ...
     with blah as x
     except Something as x

--Ned.



More information about the Python-list mailing list