近年python備受推崇,我之前只用來(lái)做跟atk的接口吏垮,最近終于認(rèn)真用上它了障涯。
然而。膳汪。唯蝶。。我覺(jué)得和它有點(diǎn)不是太合得來(lái)遗嗽。生棍。
用這貨的感覺(jué)和用mathematica頗像,都是極端高度面向?qū)ο蟮呢浵彼4饲拔揖幊痰乃悸范际敲嫦蜻^(guò)程的,沒(méi)怎么鍛煉過(guò)面向?qū)ο蟮乃季S友酱。以前用mathematica時(shí)就驚訝于它竟然會(huì)跑了幾小時(shí)后返回一個(gè)相當(dāng)于把我的輸入抄一次的結(jié)果給我晴音,讓我簡(jiǎn)直想摔電腦,更別提那默認(rèn)的畫(huà)圖風(fēng)格是坐標(biāo)軸在中心缔杉,雖然上了一個(gè)學(xué)期公選課锤躁,實(shí)用起來(lái)仍然用得簡(jiǎn)直吐血。
現(xiàn)在用python也是或详,好死不死浮夸地主要用類(lèi)來(lái)實(shí)現(xiàn)我的目的系羞,非常不熟練郭计。結(jié)果debug的時(shí)間以天為單位。
例如剛才椒振,我把可當(dāng)成常量的數(shù)據(jù)做成列表存進(jìn)了類(lèi)A的屬性B里昭伸,然后在一個(gè)循環(huán)里調(diào)用pos=A.B[i][j],想當(dāng)成復(fù)合字典來(lái)引用澎迎,然后對(duì)pos進(jìn)行修改庐杨。但是跑出來(lái)的結(jié)果讓我非常吃驚。檢查很久后發(fā)現(xiàn)print A.B[1][1]這樣的命令竟然能每次出的結(jié)果都不一樣夹供。后來(lái)想了好久才想明白灵份,它指向的是A.B[1][1]這個(gè)對(duì)象的id(或地址、句柄哮洽、指針之類(lèi)的類(lèi)似概念)填渠,而不是另辟內(nèi)存來(lái)儲(chǔ)存它的值。簡(jiǎn)直蛋碎………………能不能給我選擇要值還是地址……
想通問(wèn)題出在哪了鸟辅,但是想要按原來(lái)思路修改的話氛什,對(duì)專(zhuān)業(yè)術(shù)語(yǔ)不熟,還得試關(guān)鍵詞來(lái)搜√藿埃現(xiàn)在困得要死屉更。哎。如果就用它的這個(gè)指向id的思路洒缀,又得重新想瑰谜。
其實(shí)就是這幾天,我還寫(xiě)過(guò)一個(gè)腳本專(zhuān)門(mén)看對(duì)象引用時(shí)的地址問(wèn)題树绩,當(dāng)時(shí)就很蛋疼了萨脑,沒(méi)想到這時(shí)竟然再狠狠地絆一腳。饺饭。
早知道就繼續(xù)用shell了渤早,甚至用Excel手動(dòng)弄都好,雖然普適性不強(qiáng)需要修改瘫俊,但是效率比現(xiàn)在用python高幾十倍∪嫡龋現(xiàn)在食之難咽(比無(wú)味更糟),棄之可惜扛芽,超級(jí)郁悶骂蓖。
哎,給自己定deadline是明天(媽蛋應(yīng)該是“今天”了)中午12點(diǎn)川尖,還搞不掂的話就用Excel了登下。
想起要值的話也許可以用eval(不過(guò)不想試了)。我遇到很多麻煩的問(wèn)題都會(huì)用eval和exec,被老程序員狂吐槽被芳。但是對(duì)我來(lái)說(shuō)它們只要不出錯(cuò)還是挺好用的缰贝。。PS:又想吐槽python塊里有子函數(shù)的話exec會(huì)崩了畔濒。
長(zhǎng)路漫漫剩晴。。篓冲。
隨便搜了一下“python 引用變量”李破,就看到解決方法了。用copy模塊生成副本壹将。想起之前哪里就提過(guò)要小心python的淺復(fù)制∴凸ィ現(xiàn)在才知道原來(lái)是對(duì)可變對(duì)象和不可變對(duì)象的傳遞規(guī)則是固定無(wú)法選擇的。
我怒了诽俯,竟然連deepcopy都解決不了8玖狻!1┣4惩拧!O闪弧7拷弧!伐割!What the fuck候味!誰(shuí)說(shuō)python好入門(mén)的,這編寫(xiě)速度比我用shell和C都慢N倍隔心!氣死我了白群。
現(xiàn)在想到的辦法只有寫(xiě)入文件再讀出了,我就不信它這還不給我讀值硬霍。但是好繁瑣帜慢。。
為了能睡個(gè)正常覺(jué)以及趕上進(jìn)度唯卖,還是放棄算了粱玲。。拜轨。Excel我來(lái)了~~~
2015.3.6
結(jié)果我說(shuō)話不算數(shù)密幔。。撩轰。今天還是繼續(xù)折騰python了。期間有件突發(fā)事件(近幾天總是發(fā)生各種奇葩的意外狀況,諸如快遞丟件堪嫂、電暖器壞偎箫、被打電話催交一個(gè)不是我管的表),于是聯(lián)系了小道士皆串。他貌似心情不錯(cuò)淹办,說(shuō)要傳授我編程秘技,說(shuō)了幾句后我就把這些天弄的幾個(gè)腳本發(fā)給他看恶复。沒(méi)想到還得到了夸獎(jiǎng)?wù)f寫(xiě)得這樣算不錯(cuò)了怜森,我感動(dòng)得簡(jiǎn)直要內(nèi)牛滿面。認(rèn)識(shí)的編程大牛太多了谤牡,我老被鄙視副硅。
回想起來(lái)也好像有點(diǎn)厲害,我也就最近十天才看了python簡(jiǎn)明教程(如果monson見(jiàn)到這句可能又要吐槽我了翅萤,這么晚才看什么的)(簡(jiǎn)明教程果然非常簡(jiǎn)明恐疲,好多東西沒(méi)提要另搜),五天前才知道類(lèi)怎么實(shí)現(xiàn)(求不吐槽套么,C++書(shū)我只看到指針那章就沒(méi)看了培己,大一時(shí)雖然學(xué)過(guò)java但是只記得個(gè)大概而且1/4學(xué)期能學(xué)個(gè)啥),現(xiàn)在用它實(shí)現(xiàn)我的批量制造和讀取隧道結(jié)的需求了(要不是為了通用到atk胚泌,我早就用回shell了)省咨。哎,不過(guò)這debug時(shí)間長(zhǎng)得簡(jiǎn)直心碎……
我向他吐槽了這篇blog提到的問(wèn)題玷室,他提醒我類(lèi)一定要好好設(shè)計(jì)不然會(huì)很蛋碎零蓉。。另外告訴我拿來(lái)存要讀的數(shù)據(jù)的變量不要輕易修改(不過(guò)我覺(jué)得像python這種引用關(guān)系這么強(qiáng)的語(yǔ)言阵苇,想不被修改都難的樣子)壁公。最后我把
for ..........:
pos=class_x.attribute_xx
pos[2]=xxx+xx
xxxx=get_xxx(pos[0], pos[1], pos[2])
里的pos[2]全改成pos2,雖然(pos[0], pos[1], pos2)看著感覺(jué)有點(diǎn)不舒服绅项,但是功能實(shí)現(xiàn)得很好紊册。
他對(duì)我要做的事很感興趣,要我向他解釋我要做的是什么快耿,他也做來(lái)玩玩囊陡。我費(fèi)了一堆工夫去解釋POSCAR的格式和隧道結(jié)的堆砌方式,眼看幾小時(shí)就這樣流逝了但他仍然興致勃勃掀亥,我終于死活不肯說(shuō)下去了撞反,說(shuō)等有空時(shí)如果他仍然感興趣再詳談。搪花。遏片。