There is a nice overview of most of the differences between Python 2 and Python 3. Since there are cool features in Python 3 and the speed and availability of major libraries are no issue anymore there is no reason not to work with Python 3. Python 2.7 will be the last and Python 3.7 is currently developed, so I do not understand why one still develops new software that is Python 2 only.

Non trivial (syntax) changes

Of course there are some caveats one has to be aware of.

In Python 2 it is not allowed to have explicitly named keyword arguments after general argument. This changed in Python 3 since there you are allowed to place expansion also on the left side and in the middle if it still is clear.

So e. g.

bar = [2, 3]
def foo(*args, bar=bar):
    pass

does not work in Python 2, but does in Python 3.