木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

Python 編程語言 木辛老師帶你玩轉編程 2019-06-23

小朋友們好呀~

今天的課程我們要給大家講一講Python編程中的函數。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

我們的程序變得越來越大,越來越複雜。需要一些方法把它們分成比較小的部分,這樣在後續理解代碼的時候也會比較容易。

在Python編程中,把程序分解成較小的部分,主要有三種方法:

  1. 函數(function)就像是代碼的積木,可以重複地使用;
  2. 對象(object)可以把程序中的各個部分描述為自包含的單元;
  3. 模塊(module)就是包含程序各個部分的單獨的文件。

我們從這一節課開始,先學習函數的概念

函數 —— 積木

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

簡單地講,函數就是可以完成某個工作的代碼塊,這是可以用來構建更大程序的一個小部分。

可以把這個小部分與其他部分放到一起,就像積木搭建房子一樣。

創建或者定義函數時要用到Python的關鍵字:def。然後可以利用函數名來使用。

咱們看一個例子吧☟☟☟☟

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

在代碼的第一行中,我們使用了def關鍵字定義了一個函數。在函數名稱的後邊有一對括號,然後是一個冒號“:”

冒號告訴Python接下來是一個代碼塊,下面就是構成這個函數的代碼。

最後一行,則是主程序,是通過函數名和括號來調用這個函數的。

程序就是從這裡開始運行,就是這一行讓程序開始運行剛才定義的函數中的代碼。

主程序調用函數時,就像是這個函數在幫助主程序完成它的任務。

def塊中的代碼並不是主程序的一部分,所以程序運行時,他會跳過這一部分,從def塊下方的第一行開始執行。

調用函數

調用函數是指在運行函數裡的代碼。如果我們定義了一個函數,但是從來也不會調用他們,這些代碼就永遠也不會運行,大家也就不知道這個函數的存在了!

為了讓這個函數發揮餘熱,我們一般會這麼調用函數:使用函數名和一對括號,有的時候這些括號裡還會帶著一些東西;有時呢,也會什麼都不帶。

大家可能覺得,我們直接將函數裡的內容輸出不就好了,為什麼還要定義一個函數呢?多麻煩呀!

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

其實不是這樣的,使用函數的主要原因是:一旦定義了函數,就可以通過調用反覆地使用,比如說我們需要把剛才的信息打印10遍,只需要調用10次這個函數就可以了;

如果我們只是單純的輸出,那麼我們可能需要寫30行代碼才能實現呢!

那,使用循環不也能實現這個需求嗎?

嗯嗯,小朋友們說的很有道理,對於咱們目前的例子來說是可以的;但是如果是沒有規律的代碼塊,我們就不能通過循環完成了,循環是實現不了的。

傳遞參數

我們剛才講過了,有時候呢,我們會在調用函數的時候,在括號裡帶著一些東西;這個過程叫參數傳遞。

咱們修改一下剛才的例子,讓它支持傳遞參數

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

大家可以看到,我們通過括號裡邊攜帶的東西,將名字傳遞給了函數,函數裡的代碼塊在拼接上名字後,將信息打印了出來。

多個參數

在上邊的例子中,我們的函數只有一個參數;有的小朋友覺得不能滿足自己的需求,問可不可以傳遞多個參數呀?

這個是可以的,不止Python編程語言支持,幾乎所有的編程語言都支持多個參數的。

實際上啊,你想傳幾個參數就可以傳幾個參數,Python並不會阻止你的。

木辛博士說

談到函數傳遞信息的時候,我們聽到一個詞:形參(parameter)。也有一些人說參數和形參可以互換,所以你可以這麼說:

(1)我向這個函數傳遞了兩個形參

(2)我向這兩個函數傳遞了參數

不過呢,有些人認為,談到傳遞部分(調用函數)時應當成為實參,而提到接收部分(函數內容)時應該稱為形參。

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

嗯嗯,這樣呢,我們就實現了傳遞多個參數的需求,小朋友們也可以仿照這個方法擴展到很多很多參數。

雖然Python並沒有限制咱們傳入參數的個數,但是我們還是需要控制一下哈,不要傳遞太多的參數。

多少算太多

一般情況下,參數個數控制在5到6個以下為宜;如果超過了這個數目,咱們就需要考慮一下使用其他的方法實現了。

比較可行的是把所有參數放到一個列表中,然後把這個列表傳遞給函數。這樣一來,咱們就可以只傳遞一個參數了。

函數是可以有返回值的

咱們剛才忙活了好半天,調用函數做了很多事情。但是呢,這個函數一直都默不作聲,我們心裡沒底,這次調用到底是成功了還是失敗了呀?

這可怎麼辦呢?

其實啊,函數有一個非常有用的功能,他們是可以返回信息給調用者的。

我們發送給函數的信息叫做參數,函數返回給我們的稱為結果或者叫返回值(return value)。

如果想讓函數給我們返回信息,需要在函數中使用關鍵字:return

我們用一個例子來演示一下吧

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

大家請看,我們通過result獲取到了函數print_msg的返回,使用print函數將他打印出來,就可以看到這個確實是函數返回的信息。

太棒了!咱們又掌握了一些新知識。

小朋友們是不是覺得編程越來越有意思了呀?

想不想再繼續學一些更新的知識呢?

好的!我們接下來講一下在函數裡變量的作用域知識吧

變量的作用域

通過今天的學習,我們接觸了一些例子。小朋友們有沒有注意到:有些變量在函數之外,比如result 還有一些變量在函數內部,比如your_name。這些變量有什麼意義呢?

先說一下:局部變量吧

看字面意思,局部變量就是放到某一個小空間內的變量,在他的外部大空間是不可見的。

在Python裡,也差不多是這麼描述的。

Python在函數運行時會創建這個變量,當函數執行完成後,則會把它們全都刪除。

也就是說,當所在的函數執行完畢之後,這些變量就煙消雲散不知所蹤了。其他任何人想調用它們都是不可能的了。

所以,在程序中使用變量的部分被稱為這個變量的作用域(scope)。即,只有在這個區域的有效時間內調用才可以,其他區域的都是被禁止的!

有局部必然有全局

如果我們想讓一個變量即能在外部使用,也能在內部使用,這樣能實現嗎?

這樣是可以的。

這種變量成為全局變量,我們只需要在外部聲明一個變量就可以,這樣在外部和內部都可以使用

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

當然了,這種形式的全局變量,在函數內部是不能被修改的,我們如果想在函數內將外部的變量做修改,需要使用Python的另一個關鍵字:global。

木辛老師帶你深入淺出掌握Python的函數的概念和使用方法

就像這樣,在函數的內部,使用這個全局變量之前將他聲明為global的,之後在外部調用的時候就顯示修改後的內容了。

好了,今天的課程就到這裡吧~

小朋友們,咱們今天學到了什麼呢?

總結一下:

  1. 什麼是函數
  2. 什麼是參數
  3. 如何向函數傳遞參數
  4. 函數如何向調用者返回值
  5. 變量的作用域

小朋友們不要忘記關注我們喲 ,下期課程會帶領大家學習Python中對象的概念:《再用10分鐘教會你怎樣面向對象編程》

快樂編程,快樂成長,咱們下次課再見!

相關推薦

推薦中...