Python學習筆記之1 程式之道

2021-06-27 00:13:46 字數 2247 閱讀 1771

一直以來沒有認認真真地研究一門語言。最近很想沉下心來讀一本書,因為最近在看一本叫《機器學習實戰》的書,裡面的實現都是用python來搞之,加上自己正好不會python,很想讓自己從頭到尾再認真地學一遍語言(當然指的是計算機語言),於是開始沉下心來學習一下python。

《how_to_think_like_a_computer_scientist__learning_with_python》
正好是本英文書,為了加深自己印象,我決定一邊看,一邊實踐,一邊寫下自己的心得。好,廢話不多說了,立馬搞之!

做一名程式設計師已幾年了,從上大學開始學寫**以來,再到讀研的幾年,然後出來工作也左不多3年時間,更是很少問自己這個問題,也沒怎麼思考,空間,what』s a program?

program , 程式,由一組特定的指令組成,並完成特定的計算。

一點是由一組特定的指令組成;

一點是要完成特定的計算任務。

注意,這裡強調的是計算任務,這個計算任務有以下幾點特性:

輸入:計算要有資料流作為輸入;(當然這個資料流可以來自真實的資料,也可以是硬體裝置)

輸出:輸出的資料流

計算:算術或邏輯運算 以及 符號運算(字串處理之類)

約束條件:包括計算的軟硬體環境,對輸入出的限制等。

可復用:你編出來的程式必須是可復用的。

於是,我得出了這樣乙個圖:

乙個程式就像乙個黑盒,其是可以復用的。而圖中的輸入出與上面的特徵對應,環境就是系統對輸入及輸入以及計算的乙個約束。

而乙個好的系統,除了可復用之外,我認為還要是可以自我完善的。而這個自我完善就在後面「輸出線「返回的那條線上(我稱之為反饋)。系統的反饋是改進演算法的源泉,而這些反饋經過程式的判斷(通過了環境的約束)之後,就可以直接用來改進我們的演算法,從而得到更強大的程式。

bug最早來自飛入計算機導致運算錯誤的小飛蟲,後來,人們把找出程式中的錯誤稱之為捉蟲(debug), 而捕蟲者在我看來有幾個境界:

1、一種是很快地捕而殺之,揮刀見血,毫不留情,星爺曰:其實我是一位刀客;

2、另一種是不僅殺之,而且組建起防蟲網,讓同一缺口不在有bugs有可乘之機,此乃護國守衛者;

3、還有一種是發生事件後,不只亡羊補牢,而且具此漏洞寫出漏洞掃瞄機,對自己與別人上下掃之,輕者可以防患於未然,**者甚至可以掃出別人的漏洞,嘿嘿嘿。。。這樣就像乙個科學怪人了。

你想要達到啥境界我不知道,反正首先我們得成為一名「刀客」先吧。。

bug主要出現在3個時機,書中總結如下:

( 1 )  syntax errors 語法錯誤(編譯時錯誤)

這個錯誤在我們編譯程式時就會發生,現代的編譯器一般很牛b了,一般都能從發生問題的地方反溯出問題的根源之地。(當然,第一章基本上談談理論,在對語言都還沒知道的前提下,我們知道個大概就ok)

( 2 )  runtime errors  執行時錯誤

如其名,就是程式執行時發生的錯誤。比如你有乙個操作,除數除以0,系統就會發生錯誤,告訴你「你個sb,不知道0不可以做被除數嗎?「。

牛x的語言都用了乙個叫做 「丟擲異常(exception)「的技術來提示runtimeerror。我們可以理解為計算機發現了你的明顯錯誤,然後直接停止程式開罵了。

( 3 )  semantic errors  語義錯誤

這類是最另程式設計師頭疼的問題了。取個例子 ,你想計算1+1,輸出是1和1,但是你把演算法打錯了,把+號打成了-號。你每次輸入1,1,輸出總是0. 這個過程中計算機不報任何錯誤。

我又把這個圖搬出來,不是為了說明我的畫畫技術多牛x。只是想大概說明一下:

-         語法錯誤,發生在編譯器這個系統的輸入流,這時編譯器可以識別出來叼你一頓;

- runtimeerror,發生在「計算「當中,系統也可以識別出來叼你一頓;

- 但是語言錯誤發生在輸出端,這個錯誤如此巧妙,導致騙過了系統,但是你要想捉住他,卻是最難不過了。

而找出bug是乙個經驗問題,他通常是個這樣的過程:

分析    復現

你需要不斷地分析,不斷地復現。

Python學習筆記之IF

關係表示式 邏輯表示式 and,or,not 單分支 num 0 if num 1 print num 大於 1 else print num 不大於1 雙分支 num 10 if num 1 print num 大於 10 elif num 10 print num 等於 10 elif num ...

Python學習之函式1

python函式知識 函式的定義 以乙個例子來講述函式的定義以及其他的方面的知識 如果直接列印函式名所得到的是函式記憶體位址 函式名 得到的是函式返回值 函式必須先定義後呼叫 help 函式名 查詢函式的功能 比較倆個數大小的函式 defcompare a,b 定義函式 函式名 形參1,形參2 函式...

Python學習筆記 Python之函式

1.函式引數函式定義的時候自己定義的引數,稱為形參 函式呼叫時候,其引數為實參,即實際要傳遞的引數 舉例 def pname username username 形參 print username pname python 傳遞了乙個實參 args是接受所有未命名的引數 關鍵字 是乙個元組型別 ag...