我对Python3有一定的了解(我不是初学者,但也不是专家)。我对web开发很感兴趣,所以我想使用Django。这两个版本的Python有什么不同?如何从3切换到2.x?
发布于 2012-01-23 06:24:48
它们并没有太大的不同。你在Python3中学到的几乎所有东西都会转移到Python2中去,我建议你直接投入进去。偶尔您会看到一条错误消息,但大多数时候它们是不言而喻的。
我敢打赌,学习Django会比习惯Python 2难得多。
如果您想要编写向后兼容的代码,您可能会发现six库很有帮助。否则,我只能想到两件事,当你回到Python 2时,提前知道这两件事可能很重要:
类Foo:通过
在Python2中,如果这样做,就会得到一个老式的类,这可能不是您想要的。但是您不会收到任何关于这方面的错误消息,所以可能会出现一些微妙的继承But,并且会隐藏很长一段时间,然后才会导致问题。因此,在Python2中,请记住显式继承自object:
类Foo(
range(n),至少对于较大的n值是这样。在Python3中,range返回一个智能迭代器,但是在Python2中,range返回一个实际的列表。对于较大的范围,它可能会消耗大量内存。要获得Python3的range在Python2中的行为,可以使用xrange(n)。类似的注意事项也适用于字典keys()、values()和items()方法。它们都返回Python2中的列表。使用iterkeys()、itervalues()和iteritems()方法来节省内存。这个问题还有其他几个很好的答案,涵盖了其他一些细节,比如unicode支持。
发布于 2012-01-23 06:16:56
如果您已经熟悉Python3,那么在Python2中编写代码时,您几乎不必担心任何差异。最明显的差异与print语句的细节有关,您可能不会在Django中使用该语句。
因此,只需编写代码,并询问您可能遇到的任何具体问题。
发布于 2012-01-23 06:23:07
另一个很大的区别是Python3处理unicode的方式--Python3中的一切要么是unicode字符串,要么是二进制数据,而在Python2中,unicode字符串和8位字符串是有区别的。
下面的页面提供了更多关于Python2和Python3之间差异的信息。http://docs.python.org/release/3.0.1/whatsnew/3.0.html
https://stackoverflow.com/questions/8965120
复制相似问题