I have been learning a bit of Python 2 and Python 3 and it seems like Python 2 is overall better than Python 3. So that's where my question comes in. Are there any good reasons to actually switch over to python 3?
On the whole, and even in most details, Python3 is better than Python2.
The only area where Python 3 is lagging is with regards to 3rd party libraries.  What makes Python great is not only its intrinsic characteristics as a language and its rather extensive standard library, but also the existence of a whole "eco-system" of libraries which support so many specific applications of the language.
Several such libraries are, at the moment not fully ported to Python 3.x and this sometimes results in keeping people developing under Python 2.x.
This situation may seem a bit like a chicken and egg problem: Application developers won't move to 3.x till the libraries "get there", libraries developers would rather only maintain one branch and are waiting in an attempt to time the porting to Py3k in a way that they can put the their Py2.x branches in maintenance shortly thereafter.
This situation is somewhat of a testimony the satisfaction people have of Python 2.x (or phrased more negatively, to the lack of truly compelling incentives for a move to 3.x; while Py3k is better and poised for better things yet, as-is, it doesn't have any features that would prompt a move to 3.x "en masse".)  This said,  I believe the momentum is effectively in favor of Python 3. 
To back this up, I was about to mention the likelihood that Unladen Swallow be only ported to Py3k-only, providing some strong incentive for the move.  But Alex Martelli has started answering this question, and is using this example.  Obviously Alex speaks first-hand of these roadmap questions, please get it from the Master!
A word of caution regarding Py3k versions:  Be sure to use the most recent version (currently 3.1.2,  soon 3.2.x will replace it as the most recent stable version).  Beware that some folks (like me) occasionally use the expression "3.0" to reference the generic name for all Py3k (or even for the current version thereof).  The short lived 3.0 version per-se is now "defunct" and of no interest but maybe forensic specialists ;-)
Will Python 3 ever catch on?