91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中不能在表達式中賦值是什么原因

發布時間:2020-06-24 17:20:14 來源:億速云 閱讀:1128 作者:清晨 欄目:編程語言

小編給大家分享一下Python中不能在表達式中賦值是什么原因,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!

為什么Python不能在表達式中賦值?

許多習慣于C或Perl的人抱怨,他們想要使用C 的這個特性:

while (line = readline(f)) {
    // do something with line
}

但在Python中被強制寫成這樣:

while True:
    line = f.readline()
    if not line:
        break
    ...  # do something with line

不允許在 Python 表達式中賦值的原因是這些其他語言中常見的、很難發現的錯誤,是由這個結構引起的:

if (x = 0) {
    // error handling
}
else {
    // code that only works for nonzero x
}

錯誤是一個簡單的錯字:x = 0 ,將0賦給變量 x ,而比較 x == 0 肯定是可以預期的。

已經有許多替代方案提案。大多數是為了少打一些字的黑客方案,但使用任意或隱含的語法或關鍵詞,并不符合語言變更提案的簡單標準:它應該直觀地向尚未被介紹到這一概念的人類讀者提供正確的含義。

一個有趣的現象是,大多數有經驗的Python程序員都認識到 while True 的習慣用法,也不太在意是否能在表達式構造中賦值; 只有新人表達了強烈的愿望希望將其添加到語言中。

有一種替代的拼寫方式看起來很有吸引力,但通常不如"while True"解決方案可靠:

line = f.readline()
while line:
    ...  # do something with line...
    line = f.readline()

問題在于,如果你改變主意(例如你想把它改成 sys.stdin.readline() ),如何知道下一行。你必須記住改變程序中的兩個地方 -- 第二次出現隱藏在循環的底部。

最好的方法是使用迭代器,這樣能通過 for 語句來循環遍歷對象。例如 file objects 支持迭代器協議,因此可以簡單地寫成:

for line in f:
    ...  # do something with line...

看完了這篇文章,相信你對Python中不能在表達式中賦值是什么原因有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秦安县| 新营市| 德保县| 瑞金市| 合山市| 玉林市| 汝阳县| 菏泽市| 磴口县| 文水县| 鹤庆县| 崇阳县| 阳原县| 镇宁| 宜春市| 衡水市| 雷波县| 安庆市| 丁青县| 威海市| 南岸区| 中西区| 常山县| 宜都市| 安塞县| 吉木乃县| 巨鹿县| 牙克石市| 泰兴市| 虹口区| 山西省| 怀安县| 中卫市| 都匀市| 盱眙县| 准格尔旗| 灵武市| 临高县| 凤山县| 凤台县| 巍山|