I have found the following construct today in someone elses code: 

```
try: True, False
except NameError: True = 1==1; False = 1==0

```

As I understand this, it defines `True` and `False` if they are not defined already. So if they are defined it shouldn't throw the `NameError`-Exception, right? 

I have tryed this for myself in a shell and it shows me `SyntaxError: can't assign to keyword`

My question is why does it even shot the syntax error if True and False are defined? If True and False are available on my system, shouldn't it just go past the exception handling and not show a syntax error?