Py3k刚刚问世,并且有很多整洁的新东西!我很好奇,SO pythonistas 最兴奋的是什么?哪些功能会影响您每天编写代码的方式,或者您是否一直期待?
11 回答
我希望异常链能够流行起来。由于下面介绍的反模式而丢失异常堆栈跟踪一直是我的烦恼很长一段时间:
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)
我知道,我知道,向原始异常添加一些上下文信息并保留原始堆栈跟踪是可能的,但它需要一个非常丑陋的 hack。现在你可以(而且应该!)只是:
raise MyError("Bad, bad object!", someObject) from original_exception
并轻松获得上述两者。因此,作为我针对丢失堆栈跟踪的神圣使命的一部分:
伙计们,在重新提出异常时不要忘记from子句!谢谢你。
坦率地说,没有。虽然我可能会发现自己使用了一些新语法,但我主要使用 Python 来编写快速简单的脚本和正则表达式。
我认为新功能将使很多小事对很多人来说更容易一些,而一些大事对少数人来说会更容易。然而,我对任何声称很多人最终会在生产力方面获得巨大收益的说法持怀疑态度。
简而言之,我认为这些变化总体上会让事情变得更好一些,但不要指望任何奇迹。
没有那么多功能,但我认为库清理会很有帮助,尤其是。给新的 Python 程序员。在不止一次的情况下,我想在 python 中做一些事情,只是为了找到两个提供该功能的包含库,没有明显的理由为什么我应该选择一个而不是另一个。
尽管他们为使用解释语言实现尽可能小的迁移过程做了什么,但我发现 python3 的整个版本是十年痛苦的迁移路径。所以我觉得它不是特别吸引人。
他们所做的改进都是好的和重要的。两种不同类型的字符串一直是无处不在的烦恼的真正来源,因此他们摆脱了 unicode 对象并引入了 bytes 对象,现在 unicode str 是很好的。
bignum 与 num 的变化是为了方便,我认为这也是一个不错的选择。总的来说,他们从过去十年中积累的有害成分中清除了语言。
他们做的第二件最糟糕的事情是实现速度慢了 10%,好像速度已经不是 python 的问题了。
我相信 python3 的发布会降低而不是提高 python 的声誉。现在,当涉及到库支持时,他们又回到了他们的语言的起点。
不用做那么多..
不必担心使用
unicode()
oru""
。不必搜索文档
urllib
urllib2
并httplib
找到我需要对文件进行编码并通过 POST 请求上传的功能不必担心是否
except TypeError, something:
会捕获一个TypeError
andsomething
,或者TypeError
进入 `something..
相反,不得不再次查看文档!我现在对 python 已经足够了解了,我可以在不参考 pydoc 的情况下做大部分事情,但是每次我这样做时,我都会发现一些其他有用的模块或函数。
打印声明。 <sniff>
我已经开始想念它了。
实际上,甚至在进入 Python 2.6 之前,我们就已经print
开始支持logging.debug
. 这只是为了摆脱print
随意使用调试、支持和开发的习惯。
剩下的是一些实际在标准输出上产生东西的程序。对于这些,我们可能会在我们的一个库中引入与 2.6/3.0 兼容的“打印”功能。
字典理解不一定是惊天动地的,但它们非常好。
While{k: v for k, v in list}
比dict(list)
它更灵活和不言自明。
Python 3 最被低估的特性之一是抽象基类的引入。这不会立即彻底改变 Python 编程,但代表了从松散的鸭子类型方法到更好定义的接口方向的有趣转变。
更多信息可以在PEP 3119中找到。
几乎所有这些都是因为我将 Python 3 的发布作为学习这门语言的动力。
Unicode (utf-8) 对于生活在非英语国家的人们来说非常重要。
我不喜欢在文件开头指定编码,因为我总是忘记。通常我的文本与 ASCII 兼容,因为我使用的是 UTF-8,所以它在没有编码规范的情况下工作。但是如果我写我的名字(带重音)或€ 符号,它会中断......我最终用他们的 \uxxxx 表示写了 unicode 字符,但它有点神秘!