Python 3.0的哪些功能会改变您的日常编码?

时间:2008-12-04 15:24:42

标签: python python-3.x

Py3k just came out并且有neat new stuff的空位!我很好奇,最让人兴奋的是什么?哪些功能会影响您每天编写代码的方式,或者您是否一直期待?

12 个答案:

答案 0 :(得分:16)

有一些我很感兴趣的事情:

答案 1 :(得分:7)

我希望exception chaining能够抓住。由于下面介绍的反模式而丢失异常堆栈跟踪已经很长时间了我的宠儿:

try:
   doSomething( someObject)
except:
   someCleanup()

   # Thanks for passing the error-causing object,
   # but the original stack trace is lost :-(

   raise MyError("Bad, bad object!", someObject)

我知道,我知道,将一些上下文信息添加到原始异常可以保留原始堆栈跟踪,但它需要一个非常难看的黑客。现在你可以(和应该!)只是:

raise MyError("Bad, bad object!", someObject) from original_exception

并轻松获得以上两者。因此,作为我对丢失堆栈痕迹的神圣使命的一部分:

伙计们,在重新引用异常时不要忘记来自子句!谢谢。

答案 2 :(得分:6)

坦率地说,没有一个。虽然我可能会发现自己使用了一些新语法,但我主要使用Python来快速简单地编写脚本和正则表达式。

我认为这些新功能可以让很多人轻松一点,对一些人来说很容易。但是,我对许多人最终会在生产力方面获得巨大收益的说法持怀疑态度。

简而言之,我认为这些改变会让整体事情变得更好,但不要指望任何奇迹。

答案 3 :(得分:4)

与其说是一个功能,但我认为图书馆清理会有很大的帮助,尤其是。新的python程序员。我不止一次想在python中做一些事情,只是为了找到两个提供该功能的库,没有明显的理由为什么我应该选择一个而不是另一个。

答案 4 :(得分:3)

这是一篇很好的文章,解释了python 2.x与python 3相关的新功能和/或差异。

http://www.b-list.org/weblog/2008/dec/05/python-3000/

答案 5 :(得分:3)

尽管他们用解释语言实现了尽可能小的迁移过程,但我发现python3的整个版本是十年痛苦的迁移路径。因此我觉得它并不特别吸引人。

他们所做的改进都很好而且很重要。字符串的两种不同类型在任何地方都是一个真正的烦恼来源,因此它们很好地摆脱了unicode对象并且引入了字节对象,现在unicode str。

bignum vs. num -change来自方便,我认为这也是一个不错的选择。总的来说,他们用语言清除过去十年中积累的有害成分。

他们做的第二件最糟糕的事情是实施速度慢了10%,好像速度不会是python的问题。

我相信python3的发布会降低python的声誉而不是改进它。现在,当它归结为图书馆支持时,他们又回到了他们的语言。

答案 6 :(得分:3)

不必做那么多..

  • 无需担心使用unicode()u""

  • 无需搜索urllib urllib2httplib的文档,即可找到我需要对文件进行编码并通过POST请求上传文件的位置< / p>

  • 不必担心,except TypeError, something:会将TypeErrorsomethingTypeError抓到“某事......

相反,不得不再次查看文档!我知道python已经足够了,现在我可以在不参考pydoc的情况下完成大部分工作,但每次我这样做,我都会发现其他一些有用的模块或功能。

答案 7 :(得分:2)

印刷声明。 <sniff>我已经开始想念它了。

实际上,在进入Python 2.6之前,我们正在清除print以支持logging.debug。这只是为了摆脱习惯使用print随便进行调试,支持和开发。

实际上在stdout上生成东西的一些程序还剩下什么。对于那些,我们可以在我们的一个库中引入2.6 / 3.0兼容的“打印”功能。

答案 8 :(得分:2)

字典理解不一定是惊天动地,但它们非常好。

虽然{k: v for k, v in list}长于dict(list),但它更灵活,更具自我解释性。

答案 9 :(得分:2)

Python 3最被低估的功能之一是引入了抽象基类。这不会立即彻底改变Python编程,但代表了从松散的鸭子类型方法到更好定义的接口方向的有趣转变。

更多信息可在PEP 3119中找到。

答案 10 :(得分:1)

几乎所有这些都是因为我将Python 3的发布作为学习语言的动力。

答案 11 :(得分:1)

Unicode(utf-8)对于生活在非英语国家的人们非常重要。

我不喜欢在文件开头指定编码,因为我总是忘记。通常我的文本与ASCII兼容,因为我使用的是UTF-8,所以它没有编码规范。但如果我写下我的名字(带有重音符号)或一个符号,它就会破坏......我最后用他们的\ uxxxx表示法编写unicode字符,但它有点神秘!