導語: Python 3.8 已經發布了,引進了很多變動點。關於 3.9 預計引入的修改,也披露了一些。咱們以前還關注過 GIL 的移除計劃 和 Guido 正在開發的新解析器 等話題,這意味 Python 頗有活力,仍在健康地發展着。html
Python 3 是比較大膽激進的,拋棄了前一版本的不少陳舊的包袱,但同時,它也是相對剋制的(一直如此),社區裏提出的不少提議都被否決了。前不久,我分享的Python 設計和歷史的 27 個問題 提到了一些沉澱下來的設計問題,今天這篇譯文則聚焦於官方明確否決掉的 24 個設計問題。python
大部分問題都是細枝末節(例如大小寫、括號、反引號、行寬等等),但細究起來的話,也會挺有意思,歡迎留言討論。git
PEP原文: https://www.python.org/dev/pe...
PEP標題: Things that will Not Change in Python 3000
PEP做者: Georg Brandl
建立日期: 2006-04-04
譯者:豌豆花下貓(Python貓 公衆號做者)
翻譯計劃:https://github.com/chinesehua...github
有些想法很糟糕。儘管關於 Python 演化的某些想法具備建設性,但很多想法卻與 Python 的基本原則背道而馳,就像是讓人圍着圈跑步:哪也去不了,即便 Python 3000 容許提出特別的建議,也無論用。編程
此 PEP 嘗試列出 Python 3000 上全部的 BDFL 決斷,涉及那些不會發生更改的內容,以及不會引入的新功能,按主題排序,附加簡短的說明或者 python-3000 郵件列表的相關線索。app
若是你認爲應該實現下面所列舉的提議,那你最好當即離開計算機,出門去,盡情娛樂。去戶外活動,在草地上打盹,都比提出一個「毆打一匹死馬」的想法來得有建設性。這算是對你的警告(譯註:下面的主意是不會實現的,不要試圖改變這些已是板上釘釘的決斷)。ide
不會使用 C++ 或其它不一樣於 C 的語言做爲實現語言。可是,代碼庫將逐漸遷移。Joel Spolsky 有一篇出色的文章解釋了緣由: http://www.joelonsoftware.com/articles/fog0000000069.html
使用顯式的 self 是一個好事。消除解析變量時的歧義,可使得代碼更清晰。這還使得函數和方法之間的差別變小。郵件:「提議草案:Python 3.0 使用隱式的 self」 https://mail.python.org/pipermail/python-dev/2006-January/059468.html函數
曾經有過提議,在 Python 3000 中移除 lambda。然而,沒人可以提出更好的提供匿名函數的方法。因此 lambda 保留了下來。但只是說要保持原樣。(有人提議)增長它對語句的支持,但這不是一個好想法。由於它須要容許多行 lambda 表達式,這意味着多行表達式可能忽然出現,例如,將會容許對函數調用使用多行參數。那真是醜陋。字體
郵件:「genexp 語法/lambda」,https://mail.python.org/pipermail/python-3000/2006-April/001042.htmlui
郵件:「是一個聲明!是一個函數!二者皆是!」
https://mail.python.org/pipermail/python-3000/2006-April/000286.html
郵件:「並行迭代語法」, https://mail.python.org/pipermail/python-3000/2006-March/000210.html
郵件:「使字符串不可迭代」, https://mail.python.org/pipermail/python-3000/2006-April/000759.html
郵件:「爲生成器表達式添加排序」, https://mail.python.org/pipermail/python-3000/2006-April/001295.html
郵件:切片的將來 https://mail.python.org/pipermail/python-3000/2006-May/001563.html
郵件:消除迭代變量的做用域出血(scope bleeding) https://mail.python.org/pipermail/python-dev/2006-May/064761.html
簡單勝於複雜。這個想法適用於解析器。將 Python 的語法限制爲 LL(1) 解析器是一種好處,而不是詛咒。它使咱們帶上手銬,不至於發展過分,不至於最終獲得些時髦的語法規則,像一些走向無名的動態語言那樣,例如 Perl。
這太明顯了,以致於不須要引用郵件列表。使用
from __future__ import braces
,你就會獲得關於這個問題的明確答案。
反引號(`)將再也不用做 repr 的簡寫——但這並不意味着它們可用於其它用途。即便忽略向後兼容性的混亂,這字符自己也會引發太多問題(在某些字體、某些鍵盤上、在排版書籍時,等等)。郵件:「使用反引號做爲新運算符」,https://mail.python.org/pipermail/python-ideas/2007-January/000054.html
郵件:「用全局內置對象替換 globals() 和 global 語句」, https://mail.python.org/pipermail/python-3000/2006-July/002485.html ,「顯式詞法做用域(pre-PEP?) 」, https://mail.python.org/pipermail/python-dev/2006-July/067111.html
郵件:「顯式詞法做用域(pre-PEP?)」, https://mail.python.org/pipermail/python-dev/2006-July/066995.html
郵件:「去除容器字面量」, https://mail.python.org/pipermail/python-3000/2006-July/002550.html:
郵件:「 for/except/else 語法」 https://mail.python.org/pipermail/python-ideas/2009-October/006083.html
郵件:「對於不一樣長度的序列,令 zip() 引起異常」, https://mail.python.org/pipermail/python-3000/2006-August/003338.html
郵件:「哈希做爲屬性/特性」, https://mail.python.org/pipermail/python-3000/2006-April/000362.html
郵件:「遍歷字典」, https://mail.python.org/pipermail/python-3000/2006-April/000283.html郵件:讓 iter(mapping) 生成 (key, value) 對https://mail.python.org/pipermail/python-3000/2006-June/002368.html
frozenlist
類型。郵件:「不可變的列表」, https://mail.python.org/pipermail/python-3000/2006-May/002219.html
郵件:「 xrange vs.int .__ getslice__」, https://mail.python.org/pipermail/python-3000/2006-June/002450.html
郵件:「 C 風格指南」, https://mail.python.org/pipermail/python-3000/2006-March/000131.html
郵件:「低垂的果實:更改解釋器的提示?」, https://mail.python.org/pipermail/python-3000/2006-November/004891.html
本文檔已放置在公共領域。源文檔:
https://github.com/python/peps/blob/master/pep-3099.txt
文中出現的「郵件」,原文是「thread」,英文解釋應該是:a series of connected messages on a message board on the Internet which have been sent by different people。實際指的是「郵件列表中的議題」,爲簡潔起見,省譯爲「郵件」。
公衆號【Python貓】, 本號連載優質的系列文章,有喵星哲學貓系列、Python進階系列、好書推薦系列、技術寫做、優質英文推薦與翻譯等等,歡迎關注哦。