陳衛龍教授走了,身影在大樓拐角迅速消失了去。
望著陳衛龍教授匆匆離去的身影,謝嘉鴻,張思雅兩人彼此對視了一眼,感覺老師更像是被逼走的,有一股狼狽而逃的錯覺。
“謝師兄,這是我編寫的Python程序,能不能麻煩你幫嗎斧正一下。”周青打開筆記本上的某個編寫程序,詢問謝嘉鴻道。
謝嘉鴻轉頭,看著周青筆記本中的內容,欣然點頭:“當然可以!”
謝嘉鴻低頭認真閱覽了一遍程序,抬頭好奇地看著周青,笑問道:“Python語言學多久啦!有幾處地方編寫錯誤了呢!”
“剛學沒幾天,謝師兄,麻煩您了。”周青不好意思地說。
“難怪,初學的話,有幾處比較容易犯的錯誤你注意一下。”謝嘉鴻理解地點了點頭,指著屏幕中的編碼提醒道。
“第一:將不帶返回值的函數或方法的結果(準確來說返回值為None)賦給一個變量,比如這里:In[1]:lst=[2,3,9,12,6,8,11],In[2]:tmp=lst.sort(),In[3]:tmp,……。”
“第二:list等數據類型邊遍歷邊修改結構,比如這個位置:ListIterator有add()方法,可以向List中添加對象,而Iterator不能ListIterator和Iterator都有hasNext()和next()方法,可以實現順序向后遍歷,……。”
“第三:函數中傳可變長度參數的錯誤,比如這個地方:……。”
“第四:類初始化方法傳參數的問題,……。”
“……。”
謝嘉鴻將排查的編程錯誤一處處地指點出來,詳細地替周青講解分析起來。
周青雙眼放光,豎耳傾聽,一副好學學生的模樣,點頭連連。
“謝謝,師兄!”周青感激地點了點頭,突然接著問:“師兄,在命令執行的時候,出現“userwarningunknowndistributionoption'definemacros'”這個警告是怎么回事?我遇過很多次了。”
“這個問題可能是你的setuptools版本太低造成的,你可以先升級一下:pipinstall--upgradesetuptools,再pipinstallnumpy,……。”謝嘉鴻想了一下,回答道。
“哦!原來是這樣!謝師兄,”周青恍然大悟,接著,指著編程某處異常,問:“那這里是怎么回事,我只改了A.x,為什么C.x也改了?”
“嗯,在Python中,類變量在內部當做字典來處理,其遵循常被引用的方法解析順序(MRO)。所以在這些代碼中,由于classC中的x屬性沒有找到,它會向上找它的基類,換句話說,classC中沒有它自己的x屬性,其獨立于A。因此,C.x事實上是A.x的引用,所以會造成這樣的情況,你只要……。”謝嘉鴻順著周青指點的地方看去,連忙解釋。
“明白了,謝師兄,再問你個Python作用域的問題,……。”周青眼睛一亮,點了點頭,繼續問。
“……。”謝嘉鴻皺眉思考起來。
周青問題不斷,一個接著一個,謝嘉鴻耐心十足,詳細解答。
時間一點一滴地流逝,轉過半個多小時過去。
張思雅站在一旁,呆呆地看著他們,漸漸地感覺謝嘉鴻有些疲于應付,有些力不從心了。
“當迭代的時候,從一個列表(List)或者數組中刪除元素,對于有經驗的開發者,這是一個非常明顯的錯誤,……,Python包含大量簡潔的編程范例,若使用得當,將大大簡化和精煉代碼……,差不多就是這樣,你還什么疑問?”謝嘉鴻看著周青,有些沉不住地回答。