Will what I learn transfer easily to 3.0, or will there be a lot of wasted effort?
This applies to almost any language. The code you're going to find for years to come will be in the current version, so learn that. If you have the luxury of completely new greenfield development, choose the latest versions that you can. It's not often that I get to do that though, and I'm still astonished how much of the world depends on technology, language versions, or hardware from 10 years ago.
But, Python isn't going to be radically different in Py3k. It's still going to be Python, so a lot of the concepts, even if not all of the syntax, of the current Python will help you.
You could just START with 3.0: http://www.python.org/download/releases/3.0/
From the link: "Python 3000 (a.k.a. "Py3k", and released as Python 3.0) is a new version of the language that is incompatible with the 2.x line of releases. The language is mostly the same, but many details, especially how built-in objects like dictionaries and strings work, have changed considerably,
Yes, it will transfer. There's also already a HUGE pile of Python <3.0 code around that won't just disappear. The 2.x series will be around for a long time.
Python 2.6 is intentionally compatible with 3.0. It's the bridge version, containing some older features, access to newer features and diagnostic tools to help you locate the deprecated features.
Learning with 2.6 is a fine way to get ready for 3.0.
Python 2.6 is fine, like said by others. Notice that you can run scripts in a compatibility mode with the python2.6 shell which will give you warnings about features removed in python3.
$ python2.6 -3 yourfile.py
The -3 is the option making it show warnings when a feature will be gone.
There will be a few changes between versions (as an example, how 'print' will behave), but most of the code will be fairly easy to port, especially if you test it with the compatibility option on.
3.0 is exactly how it sounds, an improvement over the older version. They aren't going to change the entire language on you, just add some new features and modify some of the existing ones. Of course upon full non-beta release of 3.0, you can see which features have been changed and implement them accordingly into your coding habits. Or just start with the beta like other users suggested ;D
Ive started with 3.0 recently, and i was asking myself the same question as you are, after searching the net for a couple of hours i decided to go with 3.0, however, i am intending to learn the language for creating small (relatively) standalone aplications for my proffesional work, mostly for solving mathematical problems ( civil engineering, I
m 3. year now ) so i was not concerned abaut "comercial side" of that decision.
If you are in the same "interest group" as I am, I would suggest you to go with 3.0
good luck