代码之家  ›  专栏  ›  技术社区  ›  ilya n.

python 3的使用/未使用的特性是什么?

  •  3
  • ilya n.  · 技术社区  · 15 年前

    我最近做了一些网页设计作为一种爱好,主要的动机是学习有趣的东西。学习Python当然很好,但我发现有一个很好的Python重写太迟了,所以我必须从本质上学习Python3和2.6。

    我是一个新手,所以我想让大家分享一下他们认为Python3的优点/缺点是从那些做最终用户编程的人的角度出发的,而不是从语言设计师的角度出发的。我的问题更多的是,人们到底喜欢什么样的东西来使用,或者避免被认为是无益的或不讲理的。

    为了我, with 声明是肯定的加,而破坏 print 运算符肯定是负数。

    澄清编辑 :有很多帖子问你是否应该学习python 2或3,或者有什么不同。我认为我的问题是不同的:来自那些出于任何原因选择使用python 3,但可能对什么更好、什么不更好有意见的人的反馈。

    另一个解释 :答案中指出: 具有 返回到2.*。道歉。

    5 回复  |  直到 15 年前
        1
  •  2
  •   Nicolas Dumazet    15 年前

    一个优点是字节和字符串之间的澄清。在您的短python体验中,有多少次您与不清楚的 UnicodeDecodeError UnicodeEncodeError ?如果您从来没有遇到过Unicode和Bytestrings的问题,那么很可能您使用的是纯ASCII语言(英语)?但这通常是初学者最难理解的概念。(顺便说一下,如果你还是很困惑, this link should help 对于Python 2。x)

    我真的认为str和bytes之间的区别是python3.0的优点之一。读 PEP358 对于正式的描述,以及 diveintopython class 为了更面向最终用户的东西。这个新特性迫使开发人员维护 清楚的 Unicode对象和以特定编码编码的字节对象之间的区别。我相信这一变化将帮助新来者更容易理解这两种结构之间的区别,并将帮助有经验的开发人员使用明智的编程方法。

    当然,这种更改也有其自身的不便之处:移植2.x应用程序是相当困难的,如果您还没有在2.x代码中清楚地分隔unicode和字节字符串,那么从str+unicode到str+字节的更改是最令人讨厌的。烦人,但长期需要。

    这些破坏性的变化对很多用户来说很烦人,而且…对于重要的库/解决方案的实施很烦人。python2.x的现有力量是众多的第三方应用程序/模块:但由于移植到python3有时并不容易,因此这些第三方应用程序需要一些时间来移植(并且由于2.x仍然存在,这些应用程序需要维护两个版本:一个针对2.x客户端,一个针对3.x…昂贵的维护费用!)由于与python3兼容的第三方数量较少,明年运行python3的成熟应用程序的数量可能相当少。但是,我再次强烈支持这些突破性的变化:你读过这个吗? Monkey, banana, Python(3) and fire hose tale ?;)

        2
  •  5
  •   Alex Martelli    15 年前

    我还没有在生产中使用python 3,但是在使用它的过程中,我发现 print 作为一个函数是一个极好的主意——例如,我可以很容易地把它放在 lambda 现在,在2区的哪一个地方我要用 sys.stdout.write("%s\n" % foo) 有点粗糙。另外,使用不同于 sys.stdout 或者取消决赛 \n 所以 比python 2.*更具可读性!

    顺便说一句, with 也在最近的python 2.*版本中,它不是python 3独有的。

        3
  •  2
  •   Sasha Chedygov    15 年前

    我认为从长远来看,他们所做的一切都是为了最好。他们删除了许多不赞成的做事方式,从而强制“只有一种方式可以做到”,并提高了一致性。此外, with 这句话真棒。

    使用python 3的明显问题是,它缺乏对大量[大型]库(如django)的支持。如果您的库中没有一个与Python3相冲突,那么就没有理由不使用它。

        4
  •  1
  •   Ayman Hourieh    15 年前

    我很喜欢字典理解:

    {k: v for k, v in stuff}
    

    extended iterable unpacking :

    (head, *rest) = range(5)
    
        5
  •  1
  •   Nadia Alramli    15 年前

    这是非常主观的。python3.x当然比2.x有所改进。它包含了预期已久的变化,比如:字典理解、有序字典、更强大的字符串格式等等,更不用说更干净的库了。