後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

關於昨天最後遺留的問題,請利用循環依次對list中的每個名字打印出Hello, xxx!

感謝@平淡如鹽 、@恁一劍的風情 、@活力_老湯 、@慶林8791 等朋友在評論區以及@一清一涼 在群裡給我的解答,萬分感謝。

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

事實證明,這個問題我沒弄對,也是對 while 的理解不夠深造成的。

其實解決辦法很簡單,把 % 後面的 team 改成 x 就可以了。

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

教程的缺陷

在學習Python的這一個多月裡,我看了不少如何學習的文章,發現有個很大的問題就是:

很多教程、學習方法都是一些技術深厚、浸淫代碼多年的人寫的,他們腦中理解的小白和實際中的小白,差著十萬八千里。

所以他們弄出來的號稱“面向小白”的文章,或者給小白指出的路徑,完全不具有操作性。

他們寫教程的時候,腦子中下意識都覺得很多知識點理所應當不用講、大家都會的,而這恰恰是小白與有一定基礎的人之間,存在的一道很難逾越的鴻溝。

廖雪峰教程也有這個問題。

比如,學習函數部分,前面講如何定義函數都是概念,對於我來說還算不難。

結果最後弄一個例子,直接就引入了調用函數、實參、形參等知識,我看了好幾遍代碼,愣是沒全看明白。

當然,這裡面有我愚鈍的原因,但是更重要的,我覺得還是

教程步子太大,這樣真的很容易扯到蛋啊

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

題目如下。

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

坦白說,看到這題目我確實沒啥思路,思考了幾分鐘,果斷看答案。

然而,看答案我他麼依然表示有點困惑。

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

幾個讓我沒弄明白的點:

  • my_abs 這個函數有啥用?貌似跟下面的 move 函數沒有任何關係啊。
  • isinstance 在教程裡面確實有提到,說是可以用於數據類型檢查;raise 這東東是啥?之前從來沒提過,忽然這樣就冒出來了,真的好嗎?
  • move 函數里定義那倆變量是什麼鬼?解個一元二次方程,咋跑出三角函數來了?還有最後的 math.pi 這又是啥?

你他麼說好的是讓我練習的,結果調用個函數在這折騰我,玩呢?

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

各種參數

廖雪峰這裡面參數講的非常全,包括位置參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數

而黑馬教程只講了前兩者。

按照教程篇幅來說,估計這部分內容也挺重要的,就先插個眼,以後用到時候再回來看看吧。

這裡摘錄幾點核心內容:

可變參數:傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。定義可變參數和定義一個list或tuple參數相比,僅僅在參數前面加了一個*號。

關鍵字參數:允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝為一個dict。它可以擴展函數的功能。如果調用者願意提供更多的參數,我們也能收到。

命名關鍵字參數:如果要限制關鍵字參數的名字,就可以用命名關鍵字參數。和關鍵字參數**kw不同,命名關鍵字參數需要一個特殊分隔符*,*後面的參數被視為命名關鍵字參數。命名關鍵字參數必須傳入參數名,這和位置參數不同。如果沒有傳入參數名,調用將報錯。

這5種參數都可以組合使用。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

遞歸函數

尾遞歸:在函數返回的時候,調用自身本身,並且,return語句不能包含表達式。這樣,編譯器或者解釋器就可以把尾遞歸做優化,使遞歸本身無論調用多少次,都只佔用一個棧幀,不會出現棧溢出的情況。

這裡一下子又蹦出棧的概念,這就是我前文說的“大神感覺很多知識是理所應當的、不需要教的”。

可事實上,很多純粹的小白真的未必懂什麼是棧啊,我倒是知道這個詞,但再具體我也說不出來了。

畢竟,上次見到這個詞,已經是20年前學c語言的時候了。

後怕!當初要是堅持學Python用廖雪峰教程,我肯定堅持不了39天

至此,廖雪峰教程中【函數】一章學習完畢。


作者簡介:馮十一,40歲仍然堅持學習的哏兒都老男人。多平臺簽約作者,日更寫作踐行者,每週閱讀一本書。歡迎關注@天津馮十一


分享到:


相關文章: