2009-06-01 39 views
3

我最近做了一些網頁設計作爲學習興趣的主要動機。學習Python確實很不錯,但是我發現剛剛進行了很棒的Python重寫,所以我必須從本質上學習Python 3和2.6。Python 3的使用/未使用的功能是什麼?

我是新手,所以我希望大家分享他們認爲Python 3的優點/缺點是從做終端用戶編程而不是語言設計師的角度來分析。我的問題更多的是人們真正喜歡使用什麼,或者因爲沒有生產力或不積極而回避。

對我來說,with聲明是肯定加,而打破print運營商肯定是減。

澄清編輯:有很多帖子詢問是否應該學習Python 2或3或者是否有任何區別。我看到我的問題是不同的:來自任何原因的人的反饋使用Python 3進行選擇,但可能會對哪些更好,哪些不更好有意見。

另一個解釋with被回覆爲2. *。道歉。

回答

2

好的一點是字節和字符串之間的澄清。在你短的Python體驗中,你有多少次與不清楚的UnicodeDecodeErrorUnicodeEncodeError混淆?如果你從來沒有遇到unicode與bytestrings的麻煩,很有可能你使用的是ascii-only語言(英語?)),但這通常是初學者最難掌握的概念。 (順便說一句,如果你仍然困惑,Python 2的this link should help。x)

我真的認爲str和bytes之間的區別是Python3.0的一個優點。請閱讀PEP358瞭解正式說明,以及diveintopython class以瞭解更多面向終端用戶的內容。這個新特性迫使開發人員保持unicode對象與以特定編碼編碼的字節對象之間的區別。我相信這一改變將幫助新手更容易理解這兩種結構之間的差異,並將幫助有經驗的開發人員使用理智的編程方法。

但是當然這個改變有它自己的不方便:移植2.x應用程序是相當困難的,而且這些str + unicode對str +字節的改變是最令人討厭的改變,如果你還沒有明確區分Unicode和byte你的2.x代碼中的字符串。令人討厭,但長期需要。

那些突破性變化看起來讓很多用戶感到煩惱,並且...對於重要的圖書館/解決方案而言實施起來很煩人。 Python2.x目前的力量是衆多的第三方應用程序/模塊:但是由於它有時並不是簡單的移植到Python3,所以這些第三方應用程序需要一段時間才能移植(並且因爲2.x仍然這些應用程序需要維護兩個版本:一個針對2.x客戶端,一個針對3.x ...昂貴的維護!)對於下一年來說,運行Python3的完整應用程序的數量可能會相當大低,因爲Python3兼容的第三方數量很少。但是,我強烈支持這些突破性的變化:你讀過這個Monkey, banana, Python(3) and fire hose tale? ;)

2

我認爲他們所做的一切都是最好的,從長遠來看。他們刪除了許多不贊成使用的方式來執行操作,從而強制執行「只有一個方法可以做到」並提高一致性。此外,with聲明真棒。

使用Python 3的一個顯而易見的問題是它缺少對很多[大]類庫(如Django)的支持。如果你的庫沒有一個與Python 3斷開,沒有理由不使用它。

+0

除了我的服務器沒有Python 3;) – 2009-06-01 01:02:43

5

我並沒有在生產中使用Python 3,但是在玩弄它的時候,我發現print是一個非常好的想法 - 例如,我可以很容易地將它放在lambda現在,在2. *我必須使用sys.stdout.write("%s\n" % foo),有點crufty。另外,使用不同於sys.stdout的輸出文件或刪除最終的\n的這種調整的語法是,所以比Python 2更具可讀性。*'s!

順便說一下,with也是在最近的Python 2. *版本中,它不是Python 3專有的。

+0

我認爲他們可以做一個單獨的pythonic打印功能,如printme()。感謝`帶`小費! – 2009-06-01 00:56:35

+0

當然,我們可以重新命名爲'print',但是因爲將它作爲聲明和關鍵字刪除是對設計至關重要,所以名稱不太清晰就沒有提供真正的優勢。 – 2009-06-01 02:03:01

+2

我也喜歡打印功能的一致性;它在教python時消除了一點困惑。 – 2009-06-04 01:31:39

1

我真的很喜歡字典解析:

{k: v for k, v in stuff} 

而且extended iterable unpacking

(head, *rest) = range(5) 
+0

謝謝!我錯過了最後一個。 – 2009-06-01 01:03:13

1

這確實是主觀的。 Python3.x無疑是對2.x的改進。它包含很長的預期變化,如:字典解析,有序字典,更強大的字符串格式化等等。更不用說更清潔的庫了。

相關問題