不兼容,最明显的是print变成了函数。
相关推荐:《Python基础教程》
最重要的变化:
第一点是python2里的str变为了python3里的byte,而str由unicode str取代,因此一些网络编程,hash加密的函数需要将参数encode处理。
第二点是大量的python2库没有被移植到python3,以request为例,在py2与py3上的用法改变了,mysql,postgres的API在2和3上也是不同的。
最后是关于多线程的,python3引入了asyncio coroutine,导致多线程的设计思想发生了变化。
github上有2to3的一个项目,可以在上面详细了解,并学习如何迁移旧代码。