Every Python programmer knows to avoid mutable default arguments:def fn(mutable=): mutable.append('elem') print mutable fn() fn() $ python test.py ['elem'] ['elem', 'elem']
However, many are not clear that this is due to arguments being evaluated at import time, rather than the first time the function is evaluated.
This results in related quirks such as:def never_called(error=1/0): pass $ python test.py Traceback (most recent call last): File "test.py", line 1, in <module> ZeroDivisionError: integer division or modulo by zero
... and an—implementation-specific—quirk caused by naive constant folding:def never_called(): 99999999 ** 9999999 $ python test.py [hangs]
I suspect that this can be used as denial-of-service vector.
This month sees us in the Adelphi, just South of Leeds Bridge, Starting around 7pm-ish. One of the regulars, Andy, has offered to show us round a nearby data centre, during the meeting.
Here is a location link from google maps Look for the funny blokes sitting round the laptops, see you there!
Should be an interesting morning. ☺
aptitude purge #systemd
As Theresa May moves from the Home Office to Number 10, it is perhaps timely to reflect on public attitudes to surveillance as evidenced in Liberty’s campaign film “Show me yours” in April of this year. In the film (shown below), comedian Olivia Lee pursues members of the public with the intention of taking details from their mobile phones of all their recent communications or browsing activity. The reactions of the people approached speak for themselves. Unfortunately, Liberty research suggests that 75% of adults in the UK had never heard of the impending legislation laid out in the Investigatory Powers Bill.