?聊聊Python中反直覺的設(shè)計(jì)|零壹教育分享)
在你與之接觸過后, 你會(huì)察覺到, 有相當(dāng)數(shù)量的語言設(shè)計(jì)情況, 而它們和那普通一類人的先天便擁有關(guān)的認(rèn)知并非甚為相符一致, 是歸屬于那種違背直覺的微小細(xì)節(jié)范疇之中的。當(dāng)中布爾值能夠直接去參與到算術(shù)運(yùn)算這件事, 就是極為典型的其中一項(xiàng)。于我們平常的認(rèn)知范疇里, 布爾值存有兩種狀態(tài), 其一為成立, 其二為不成立, 它專門用以進(jìn)行條件判斷, 且與數(shù)字是全然分開的兩類不同數(shù)據(jù)。然而在底層的邏輯里面, 代表成立的布爾值True實(shí)則本質(zhì)上等同于數(shù)字1, 代表不成立的False等同于數(shù)字0, 其能夠直接被拿來開展加減乘除計(jì)算。這個(gè)特性并非單純意在用花樣, 在實(shí)際著手處理表格數(shù)據(jù)之際, 是完全能夠發(fā)揮其作用的。比如說, 當(dāng)我們期望統(tǒng)計(jì)一份Excel表格里, 滿足特定篩選條件的記錄究竟有多少條時(shí), 按傳統(tǒng)方式, 就得編寫循環(huán)逐個(gè)去判斷并計(jì)數(shù), 而借助該特性, 就能更為迅速地統(tǒng)計(jì)出數(shù)量, 進(jìn)而對(duì)腳本邏輯予以簡化。還有, 切片反轉(zhuǎn)文本亦是眾多初學(xué)者認(rèn)為違背常理的一種寫法, 它無需編寫循環(huán)去遍歷字符串, 而是憑借簡單的切片標(biāo)記就能直接將一整段文字的順序顛倒過來,在文本清洗場景中偶爾會(huì)被用到。另外, 數(shù)字中間能夠增添閱讀分隔標(biāo)記, 其僅僅專門用來考量人的閱讀體驗(yàn), 不會(huì)讓實(shí)際數(shù)值發(fā)生改變, 這同樣是許多初學(xué)者事先沒有想到的一項(xiàng)較為出眾奇妙新穎獨(dú)特罕見超綱意想不到意料未及特別出人意表萬萬沒想到猝不及防始料不及匪夷所思突兀驚愕瞠目結(jié)舌根瞠目結(jié)舌目瞪口呆出乎意料大出所料超乎想象的設(shè)計(jì)。這些不符合直覺的設(shè)計(jì), 并非是語言方面的錯(cuò)誤情況, 而是其自身原本就確定的語法準(zhǔn)則。這同樣提示我們, 不要運(yùn)用拿其他軟件、其他編程語言的那種固定思維去強(qiáng)行照搬, 許多邏輯會(huì)存在差異??墒悄? 也要去提醒那些上班族, 千萬別特意去追求運(yùn)用這種違背直覺的寫法來賣弄技巧。要是用平常通俗易懂的方式能夠達(dá)成需求, 咱們優(yōu)先去選擇通俗易懂的寫法。要是過度堆砌違背直覺的語法, 就會(huì)使得腳本閱讀的門檻變高, 接下來維護(hù)、修改腳本的時(shí)候就會(huì)變得格外麻煩。搞清楚這些特性, 主要是為了讓眼界得以拓寬, 能看懂他人所撰寫的腳本, 在碰見適配的業(yè)務(wù)情形時(shí)能夠合理運(yùn)用。切莫為了運(yùn)用小眾特性而強(qiáng)行去改造自身的代碼, 實(shí)用性始終是排在首位的。