如果我已经知道Python 3,那么如何学习Python 2?
我对Python 3有些了解(我不是初学者,但不是专家)。我对web开发感兴趣,所以我想使用Django。Python的两个版本之间有什么区别?如何从3切换到2.x?如果您已经熟悉Python3,那么在Python2中编写代码时几乎不需要担心任何差异。大多数用户可见的差异与如果我已经知道Python 3,那么如何学习Python 2?,python,django,python-3.x,python-2.x,Python,Django,Python 3.x,Python 2.x,我对Python 3有些了解(我不是初学者,但不是专家)。我对web开发感兴趣,所以我想使用Django。Python的两个版本之间有什么区别?如何从3切换到2.x?如果您已经熟悉Python3,那么在Python2中编写代码时几乎不需要担心任何差异。大多数用户可见的差异与print语句的细节有关,您可能不会在Django中使用该语句 因此,只需编写代码,并询问您可能遇到的任何具体问题。另一个很大的区别是Python 3处理unicode的方式-Python 3中的所有内容都是unicode字符
print
语句的细节有关,您可能不会在Django中使用该语句
因此,只需编写代码,并询问您可能遇到的任何具体问题。另一个很大的区别是Python 3处理unicode的方式-Python 3中的所有内容都是unicode字符串或二进制数据,而Python 2中对unicode字符串和8位字符串进行了区分 下面的页面提供了更多关于Python2和Python3之间差异的信息。
它们没什么不同。在Python3中学习的几乎所有内容都将转移到Python2中。我建议你干脆跳进去。偶尔您会看到一条错误消息,但大多数情况下它们都是不言自明的 我敢打赌,学习Django将比习惯Python2困难得多 如果您想编写向后兼容的代码,您可能会发现该库很有用。否则,我只能想到两件事,在您回顾Python 2时,提前知道这两件事可能很重要:
class Foo:
pass
在Python2中,如果这样做,就会得到一个旧样式的类,这可能是您不想要的。但您不会得到任何关于此的错误消息,因此可能会出现微妙的继承错误,并在导致问题之前隐藏很长时间。因此,在Python 2中,请记住显式继承自对象
:
class Foo(object):
pass
范围(n)
,至少对于n
的较大值。在Python3中,range
返回智能迭代器,但在Python2中,range
返回实际列表。对于大范围,它会消耗大量内存。要获得Python2中Python3的range
的行为,请使用xrange(n)
。类似的警告也适用于dictionarykeys()
、values()
和items()
方法。它们都返回Python 2中的列表。使用iterkeys()
、itervalues()
和iteritems()
方法来节省内存另外,正如senderle所指出的,您使用了来自对象的子类(在Python3中也建议这样做,可能是因为它实际上在Python2中有所不同)。谢谢。我可能会在没有意识到的情况下犯下那个错误。