最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

為什么 Python、Go 和 Rust 都不支持三元運算符

2023-05-15 23:13 作者:see課薇_itspcool  | 我要投稿

在編程時,我們經(jīng)常要作條件判斷,并根據(jù)條件的結(jié)果選擇執(zhí)行不同的語句塊。在許多編程語言中,最常見的寫法是三元運算符,但是,Python 并不支持三元運算符,無獨有偶,兩個最熱門的新興語言 Go 和 Rust 也不支持! 為什么 Python 不支持三元運算符呢?本文將主要分析 Python 在設(shè)計

條件選擇語法

時的過程,科普為什么它會采用現(xiàn)今的與眾不同的實現(xiàn)方案,同時,我們也將考察為什么其它語言也要拋棄傳統(tǒng)的三元運算符。

在開篇之前,我再聲明一下:就像“Python為什么”系列的大部分文章一樣,本文關(guān)注的僅是一個很小的語法點,但它并不是“茴香豆有幾種寫法”那種毫無意義的話題。因為,

細微之處見真功夫,深入研究語言設(shè)計背后的原因、歷史和哲學,可以讓我們在編程時有更加清晰和自由的思維。

什么是三元運算符?

三元運算符通常指的是“?:”,其語法形式為:condition ? expression1 : expression2,如果 condition 為真,則取 expression1,若不為真,則取 expression2。

語法簡化形式“a ? b : c”,可以讀成“如果 a 條件成立,則為 b,否則為 c”。

三元運算符是對普通一重 if-else 結(jié)構(gòu)的簡化,常用于在一條語句中同時實現(xiàn)條件判斷和取值操作。

C復(fù)制代碼// 常規(guī) if-else

if (a > b) {

result = x;

} else {

result = y;

}

// 簡化后的寫法

result = a > b ? x : y;

采用了這種語法設(shè)計的編程語言有很多,比如 C、C#、C++、Java、JavaScript、PHP、Perl、Ruby、Swift 等等。毫無爭議,它就是編程語言界的主流設(shè)計方案(至今仍是)。

這種語法非常簡潔高效,代碼的可讀性也很強(如果你不是第一次接觸的話),深得很多人的喜歡。

但是,它并非毫無缺點。Python 是這種語法設(shè)計的最著名的挑戰(zhàn)者,接下來,我們將看看為什么 Python 要另辟蹊徑。 Python 社區(qū)的投票

Python 發(fā)布于 1991 年,但在接下來的 15 年里,除了 if-else 語法外,它并不支持三元運算符和其它條件表達式。而且,在 2006 年引入條件表達式前,社區(qū)對此進行了漫長而曲折的爭論,可以說這是一個設(shè)計得很艱難的語法了。

最初,由于時常有人請求添加 if-then-else(三元)表達式,因此在 2003 年 2 月,PEP 308 – Conditional Expressions 被提了出來,目的是讓社區(qū)選出一個讓多數(shù)人支持的方案。

很快,除了少部分人希望啥也不做外,社區(qū)里出現(xiàn)了好幾種方案: (1)使用標點符號構(gòu)建的三元運算符 即常規(guī)的三元運算符,跟前文介紹的語法一樣:

Python

復(fù)制代碼

? :

這個方案的呼聲挺高,有開發(fā)者甚至已提交了實現(xiàn)代碼。但是,Guido 給出了兩個反對的理由:冒號在 Python 中已經(jīng)有許多用途(即使它實際上不會產(chǎn)生歧義,因為問號需要匹配冒號);對于不習慣 C 衍生語言的人來說,理解起來很困難。

(2)使用現(xiàn)有和新的關(guān)鍵字構(gòu)建

引入新的“then”關(guān)鍵字,結(jié)合現(xiàn)有的“else”關(guān)鍵字:

為什么 Python、Go 和 Rust 都不支持三元運算符的評論 (共 條)

分享到微博請遵守國家法律
黄大仙区| 寻乌县| 三明市| 沙河市| 开江县| 临澧县| 辽宁省| 乐至县| 鄂尔多斯市| 成武县| 河北省| 宝鸡市| 延寿县| 涟源市| 乌鲁木齐县| 资溪县| 新蔡县| 佛学| 商城县| 浠水县| 右玉县| 普安县| 连江县| 修武县| 天津市| 翼城县| 辽阳县| 郯城县| 贵州省| 富民县| 卫辉市| 巴东县| 禄丰县| 四子王旗| 德昌县| 舟山市| 抚顺市| 陆丰市| 长宁县| 阜新| 武胜县|