亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

平潭县| 左云县| 温宿县| 安宁市| 兴文县| 吉安县| 阿拉善左旗| 逊克县| 体育| 双流县| 清丰县| 靖宇县| 巴楚县| 闽清县| 武定县| 交城县| 望奎县| 墨竹工卡县| 沂南县| 文昌市| 万源市| 城固县| 凤庆县| 南宁市| 兴文县| 怀集县| 文成县| 郸城县| 武宁县| 宝清县| 化隆| 丽江市| 来宾市| 翁源县| 枣强县| 乡城县| 沾化县| 东乌| 冷水江市| 鹰潭市| 永兴县|