On Sun, 9 Oct 2016 12:53 pm, Chris Angelico wrote: >> They're caught by identity, though - "except 'type error'" fails to >> catch TypeError, and vice versa. > > Fascinating! What about: except sys.intern('type error') ? Or does > interning of strings not exist yet :)
>>> intern Unhandled exception: undefined name: intern Stack backtrace (innermost last): File "<stdin>", line 1 >>> import sys >>> sys.intern Unhandled exception: undefined name: intern Stack backtrace (innermost last): File "<stdin>", line 1 There's no `is` operator, or id() function, so it's impossible to tell whether small ints and strings are interned/cached except by reading the source. No longs (let alone unified int/long). The weirdest thing seems to be that {} exists (and is called a dictionary, not dict) but there's no dict builder syntax: >>> type({}) <type 'dictionary'> >>> d = {'a': 1} Parsing error: file <stdin>, line 1: d = {'a': 1} ^ Unhandled exception: run-time error: syntax error and keys have to be strings: >>> d = {} >>> d[1] = 2 Unhandled exception: type error: illegal argument type for built-in operation Stack backtrace (innermost last): File "<stdin>", line 1 >>> d['1'] = 2 >>> print d {'1': 2} There are functions (def) but not lambda, but no `class` statement. Primitive days indeed. And yet already usable. -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list