I was trying to ascertain the state of "Python" 2.3 today, and
PEP 283 offered up an interesting list of what is already in for 2.3, and a fairly long list of "planned features". What's in? Two new types - booleans and
sets!. A fundamental
datetime type or interface may make the release as well. A planned possible feature is an
Iterator Tools module featuring "goodies from SML and Haskell".
I've been using Python for over six years now (it's hard to believe it's been that long!), and it's been interesting to watch the language grow since 1.3. A nice thing about Python's growth is that it's been fairly smart - as it picks up new features, it also simplifies itself. A lot of the old confusions / problems are gone or going away, and helpful features have popped up -- the type/class dichotomy is on its way out (it's interesting to see the prototype 'bool' type written up in Python by subclassing from 'int' - see
PEP 285); booleans are coming in (I've always liked the way Python has treated true/false values, but it's nice to have actual 'True' and 'False' objects, and the built in 'bool' constructor); much of the old 'string' module has become methods on the 'string' type, removing the oddities of having a bunch of procedures to operate on a very common object in an object-oriented language; there are more unifications in expressions (the 'in' operator can now be used to search for substrings in a string:
if 'this' in 'there was this thing..':
in place of
if 'there was this thing..'.find('this') > -1:
; this also applies for dictionary keys:
'somekey' in mydict
in place of
mydict.has_key('somekey')
); iterators are offered throughout the language now, sometimes offering shortcuts for common operations (such as reading individual lines from a file), and keeping resource use down for others; and we finally have nested scopes. Not to mention the little delights like Generators and List Comprehensions.