中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

望都县| 兰西县| 延安市| 安西县| 阜新市| 岑巩县| 将乐县| 措勤县| 陈巴尔虎旗| 瓮安县| 印江| 兴化市| 綦江县| 凌源市| 鱼台县| 乐安县| 城口县| 石河子市| 冕宁县| 河东区| 塔城市| 商南县| 油尖旺区| 都江堰市| 永善县| 大新县| 沾化县| 峡江县| 洪洞县| 德江县| 佛坪县| 尚志市| 丹凤县| 庆阳市| 光泽县| 屏东县| 屏南县| 黎平县| 门源| 屯昌县| 治县。|