Bad Code Snippet of the Day

Chris Angelico rosuav at gmail.com
Tue Feb 18 16:14:37 EST 2014


On Wed, Feb 19, 2014 at 7:41 AM, Terry Reedy <tjreedy at udel.edu> wrote:
> On 2/18/2014 11:47 AM, Chris Angelico wrote:
>>
>> I call this "Russian Exception Roulette". It came about because of
>> some discussions on python-ideas regarding the new PEP 463 and
>> exception handling.
>>
>> try:
>>      exc = getattr(__builtins__,random.choice(list(filter(lambda x:
>> x.endswith("Error"),dir(__builtins__)))))
>>      f()
>> except exc:
>>      print("You win!")
>>
>> Given a function f(), defined elsewhere, what will this do?
>
>
> I am not sure what you are asking or what your point is. If f happens to
> raise the randomly selected exception, it prints 'You win!', otherwise it
> does nothing.

My point is that this is a piece of obscure code: the try block
affects the interpretation of the except that's associated with it.
Just playing around with obfuscated Python, for amusement value.

The rules of Python are so simple that they allow stupidity like this,
and the interpreter just goes, "So? Of course that's how it is!". I
like it. :)

ChrisA



More information about the Python-list mailing list