Emacs is an excellent programming environment for Python. I've selected a handful of packages here that together give a very neat coding experience. There are many alternatives for just about every package on display here, but these are my current favourites when coding Python.
In just this wee picture you see several great Emacs features at play: auto completion by anaconda-mode and autocomplete-mode, on the fly syntax checking using pyflakes and flymake, as well as intelligent method help in the minibuffer thanks to eldoc and anaconda-mode:

If you just hold on for a bit longer, Emacs will also give you the full documentation of the method which you are about to complete:

anaconda-mode will also look up any documentation for you on any
symbol when you hit M-?:

anaconda-mode hooks into Emacs' standard tagging feature, which means
you use the standard shortcut M-. for jumping to the definition of
the symbol under your cursor and M-* for jumping back to where you
were. It's really, really fast and let's you drill down or up your call
stacks with amazing speed.
Hitting M-r will show you all the usages in your project of the
symbol at point:

Naturally, Emacs gives you a Pythons hell inside Emacs so that you
easily can try out code before adding it to your own source code. Just
type M-x python-shell-switch-to-shell and the Python interpreter
opens up in a new buffer:

And that concludes my wee tour through some of Emacs' Python features. Happy coding!