Python is cute, but I've grown to like statically typed languages. IDE support is just awesome; static analysis and all sorts of tools do a better job for a static language.
If you actually like Python, but are worried about speed, look up go. Seems like a nice language; I'm definitely planning on using it once I'm done with my current project. People have been mentioning IDEs for Python, and they've missed Wing IDE. It's quite good, if you can live with the ugliness of GTK+.
Anyhow, I'd do it in Java, because I do prefer statically typed languages.
(and the new Eclipse does look a lot better. This recommends thing looks quite promising.)
Just took a look at Go. Seems theres a few bindings to various graphics frameworks etc already: http://go-lang.cat-v.org/library-bindings You have openGL and SDL bindings at least. No openAL though, infact only audio seems to be through port audio which is fine for 2d games but I think some kludging may be required for effective 3d audio. That said maybe just increasing and decreasing the volume of x sound based on where it theoretically comes from may do, combined with a little bit of left/right audio balance changes., should just be able to work out distance between you and lets say a gunshot nearby. Wouldn't be the nicest solution but should work.
I'm already spread too thin in what I'm attempting to do to expand my programming abilities right now but one day I might take a look at go.
I'd like to share my experience with Java and Python thus far.
I can't say much about Python because I've only used it for scripting my Java games, and I haven't used any IDE with it. Most of the Python code I use in the game is either generated by my level editor or I merely filled out a template. The annoying things that I've noticed were merely annoying because I wasn't used to them.
In Java, I had a massive problem with OOP. That's not a bad thing, if you're good at it, but if you're a beginner, it's going to get in your way with direct proportion to the complexity of your games, unless you take care to develop your design skills along. This, of course, is inherent to OOP, not a particular language, but Java is OOP-only. I mean, if you really wanted to, maybe you could get around it, but it'll probably end up being even worse than just going along OOP.
When I started off my 2D side-scroller, everything seemed OK in the beginning, but the closer to the end I got, the more hair I had to rip out of my head because I couldn't manage all the code. My code lacked design so hard, that I had all of my pathfinding code (and I mean ALL of it) in a single file. It worked, but it took a good 2-3 months to get it there with reasonable speed. Majority of that time was me simply avoiding programming altogether because every time I opened the editor about half of the time looking at the code I would spend trying to figure how it works again. But by that time I was getting increasingly frustrated, and it only got worse past that point.
For some time I really hated that language. It felt bloated and verbose, and yet it still kind of does because you can't really look at all the methods of a class without having to scroll through all the code in it, but that's just something to live with .
Code Complete along with a few other design principles helped me a great deal with it. That notion apart, the language itself is relatively straight-forward. I use NetBeans, which I suspect is written in Java