重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
小編給大家分享一下Python中不能在表達(dá)式中賦值是什么原因,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的晉安網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
為什么Python不能在表達(dá)式中賦值?
許多習(xí)慣于C或Perl的人抱怨,他們想要使用C 的這個(gè)特性:
while (line = readline(f)) { // do something with line }
但在Python中被強(qiáng)制寫成這樣:
while True: line = f.readline() if not line: break ... # do something with line
不允許在 Python 表達(dá)式中賦值的原因是這些其他語言中常見的、很難發(fā)現(xiàn)的錯(cuò)誤,是由這個(gè)結(jié)構(gòu)引起的:
if (x = 0) { // error handling } else { // code that only works for nonzero x }
錯(cuò)誤是一個(gè)簡單的錯(cuò)字:x = 0 ,將0賦給變量 x ,而比較 x == 0 肯定是可以預(yù)期的。
已經(jīng)有許多替代方案提案。大多數(shù)是為了少打一些字的黑客方案,但使用任意或隱含的語法或關(guān)鍵詞,并不符合語言變更提案的簡單標(biāo)準(zhǔn):它應(yīng)該直觀地向尚未被介紹到這一概念的人類讀者提供正確的含義。
一個(gè)有趣的現(xiàn)象是,大多數(shù)有經(jīng)驗(yàn)的Python程序員都認(rèn)識(shí)到 while True 的習(xí)慣用法,也不太在意是否能在表達(dá)式構(gòu)造中賦值; 只有新人表達(dá)了強(qiáng)烈的愿望希望將其添加到語言中。
有一種替代的拼寫方式看起來很有吸引力,但通常不如"while True"解決方案可靠:
line = f.readline() while line: ... # do something with line... line = f.readline()
問題在于,如果你改變主意(例如你想把它改成 sys.stdin.readline() ),如何知道下一行。你必須記住改變程序中的兩個(gè)地方 -- 第二次出現(xiàn)隱藏在循環(huán)的底部。
最好的方法是使用迭代器,這樣能通過 for 語句來循環(huán)遍歷對象。例如 file objects 支持迭代器協(xié)議,因此可以簡單地寫成:
for line in f: ... # do something with line...
看完了這篇文章,相信你對Python中不能在表達(dá)式中賦值是什么原因有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!