国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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 都不支持三元運算符的評論 (共 條)

分享到微博請遵守國家法律
贵港市| 乐都县| 华宁县| 广西| 荥阳市| 四子王旗| 通辽市| 平南县| 当涂县| 兴国县| 丹棱县| 涞水县| 富锦市| 辰溪县| 边坝县| 车险| 临安市| 浠水县| 罗平县| 霍城县| 牙克石市| 东方市| 澎湖县| 文水县| 兴安盟| 徐汇区| 明光市| 镇江市| 垦利县| 鲁山县| 漯河市| 伊川县| 武城县| 峡江县| 安徽省| 四平市| 隆尧县| 桃园县| 呈贡县| 镇平县| 七台河市|