<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="Python 3000 FAQ" id="card1">
<p> 游客</p><p>
标题:Python 3000 FAQ<br/>
正文:<br/>
Q. 我想学 Python。我应该学 Python 2.6还是Python 3.0？A. 绝对是学 Python 2.x(最新出的版本是 2.5)。我期望在你需要学习 Python 3.0之前先学两年2.x，并且从一个初学者的角度来看两个版本间的差异并不是很大：在2.x中学到的绝大多数内容仍然可以用在3.0中。Q. 既然你打算去掉 reduce()，为什么还保留 map()和 filter()呢？A. 不是因为讨厌函数式编程我才去掉 reduce()。我去掉它是因为几乎所有用到 reduce() 的代码的可读性比起使用一个 for 循环和累积变量的实现来说可读性差多了。而对于 map()和 filter()来说，它们有用得多，并且当与一个已经存在的函数(如内置函数)一起使用时比起使用list comprehension或generator表达式来说更清晰一些。(不过不建议使用lambda，否则使用list comprehension要更清晰和更快。)Q. 多核处理器将成为标准甚至在不久的将来对于笔记本也是如此。那么 Python 3.0会不会想得到这样的好处而去掉 GIL(全局解释器锁)吗？A. 不会。我们不打算过多的修改 CPython 的实现。去掉 GIL 将会造成对解释器的大量的重写，因为所有内部的数据结构(和引用计数操作)都将不得不设计成线程安全的。这种做法以前曾经尝试过(在90年代末由Greg Stein进行的)，结果得到的解释器的运行速度慢了两倍。如果你有多个 CPU，并且你想全部用上，你可以创建象 CPU 一样多的进程。(你所写的 web 应用应该容易被扩展，不是吗？所以，如果你能够在不同的机器上运行几个拷贝，对于在一台机器上运行多个 server 的拷贝就不算什么了。)如果你想要的是&amp;ldquo;真正的&amp;rdquo;多线程，那么使用 Jython 或 IronPython。JVM 和 CLR 的确支持多 CPU 线程。当然要准备好面对：死锁、活动锁(live-locks)、竟争条件(race conditions)和所有其它伴随着多线程代码而来的有损害的东西。Q. 我比较喜欢使用相同的源代码用在 2.x 和 3.0中，我实在是不想使用 2to3 源代码转换工具。为什么你不能实现它呢？A. 看你自已了。2.6 与 3.0 之间的交集的很大，但是还有有些<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=516&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=516&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=516&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=516&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=516">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=516">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>