Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我已经知道Python 3,那么如何学习Python 2?_Python_Django_Python 3.x_Python 2.x - Fatal编程技术网

如果我已经知道Python 3,那么如何学习Python 2?

如果我已经知道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字符

我对Python 3有些了解(我不是初学者,但不是专家)。我对web开发感兴趣,所以我想使用Django。Python的两个版本之间有什么区别?如何从3切换到2.x?

如果您已经熟悉Python3,那么在Python2中编写代码时几乎不需要担心任何差异。大多数用户可见的差异与
print
语句的细节有关,您可能不会在Django中使用该语句


因此,只需编写代码,并询问您可能遇到的任何具体问题。

另一个很大的区别是Python 3处理unicode的方式-Python 3中的所有内容都是unicode字符串或二进制数据,而Python 2中对unicode字符串和8位字符串进行了区分

下面的页面提供了更多关于Python2和Python3之间差异的信息。

它们没什么不同。在Python3中学习的几乎所有内容都将转移到Python2中。我建议你干脆跳进去。偶尔您会看到一条错误消息,但大多数情况下它们都是不言自明的

我敢打赌,学习Django将比习惯Python2困难得多

如果您想编写向后兼容的代码,您可能会发现该库很有用。否则,我只能想到两件事,在您回顾Python 2时,提前知道这两件事可能很重要:

  • 避免使用旧式类。在Python 3中,可以像这样声明一个类,没有任何问题:

    class Foo:
        pass
    
    在Python2中,如果这样做,就会得到一个旧样式的类,这可能是您不想要的。但您不会得到任何关于此的错误消息,因此可能会出现微妙的继承错误,并在导致问题之前隐藏很长时间。因此,在Python 2中,请记住显式继承自
    对象

    class Foo(object):
        pass
    
  • 避免使用
    范围(n)
    ,至少对于
    n
    的较大值。在Python3中,
    range
    返回智能迭代器,但在Python2中,
    range
    返回实际列表。对于大范围,它会消耗大量内存。要获得Python2中Python3的
    range
    的行为,请使用
    xrange(n)
    。类似的警告也适用于dictionary
    keys()
    values()
    items()
    方法。它们都返回Python 2中的列表。使用
    iterkeys()
    itervalues()
    iteritems()
    方法来节省内存

  • 对于这个问题,还有其他一些非常好的答案,包括一些其他细节,例如支持。

    请通读以下内容:

    请注意,有很多东西只是从Python2中删除,比如apply(),因此您无需担心


    另外,正如senderle所指出的,您使用了来自对象的子类(在Python3中也建议这样做,可能是因为它实际上在Python2中有所不同)。

    谢谢。我可能会在没有意识到的情况下犯下那个错误。