小白學 Python(16):基礎數據類型(函數)(上)

人生苦短,我選Pythonpython

前文傳送門git

小白學 Python(1):開篇github

小白學 Python(2):基礎數據類型(上)編程

小白學 Python(3):基礎數據類型(下)數據結構

小白學 Python(4):變量基礎操做函數

小白學 Python(5):基礎運算符(上)spa

小白學 Python(6):基礎運算符(下)code

小白學 Python(7):基礎流程控制(上)cdn

小白學 Python(8):基礎流程控制(下)blog

小白學 Python(9):基礎數據結構(列表)(上)

小白學 Python(10):基礎數據結構(列表)(下)

小白學 Python(11):基礎數據結構(元組)

小白學 Python(12):基礎數據結構(字典)(上)

小白學 Python(13):基礎數據結構(字典)(下)

小白學 Python(14):基礎數據結構(集合)(上)

小白學 Python(15):基礎數據結構(集合)(下)

引言

跟各位同窗講一個好消息,當你看到這篇連載的時候,整個 Python 基礎內容部分已通過大半了。

但願各位同窗再接再礪,努力把剩下的部分也看完。

函數

提到函數,沒有接觸過編程的同窗會不會想到這個:

y = f(x)

可是,咱們在 Python 中使用到的函數和數學中的函數沒有半毛錢關係(額,可能稍微有點關係)。

在 Python 中,咱們使用函數是爲了簡化問題,將同一類的操做定義爲一個函數,在遇到相同的問題調用對應的函數,相似於 y = f(x)x = 1 的時候 y = 1x = 2 的時候 y = 2

因此,函數就是重複使用的代碼。

定義函數

定義函數的規則以下:

  • 函數代碼塊以 def 關鍵詞開頭。
  • 後接函數名稱和圓括號 ()
  • 圓括號中可使用參數。
  • 函數內容以冒號起始,而且縮進。
  • return 結束函數,能夠選擇性地返回一個值。不帶 return 至關於返回 None。

定義一個函數大體長這樣:

def 函數名(形式參數):
    函數體
    return 返回值複製代碼

def 是系統關鍵字,至於什麼是系統關鍵字後面咱們再聊,這裏僅須要知道 def 是用來定義函數的便可。

系統關鍵字在 PyCharm 中都會高亮顯示,若是沒有高亮,那麼必定是你打錯了。

好比咱們如今定義一個求兩數之和的函數:

def add(a, b):
    c = a + b
    return c複製代碼

這個有看不懂的麼?

沒有的話我就接着往下聊了,有的話就給我留言吧。

以上咱們就完成了一個函數的定義。

函數調用

函數定義好之後咱們還須要調用函數才能執行,一個函數放在那裏是不會自動執行的。

廢話,我哪知道你要傳什麼參數過來。。。

咱們調用一下剛纔寫好的函數:

c = add(1, 2)
print(c)複製代碼

打印結果以下:

3複製代碼

這裏咱們介紹兩個名詞:

  • 實際參數:簡稱實參,咱們剛纔在調用函數的時候傳入 1 和 2 就是實參。主要體如今實際執行函數的時候使用。
  • 形式參數:簡稱形參,咱們剛纔在定義函數的時候 add(a, b) 中的 a 和 b 就是形參。主要體如今它只是一個形式和格式,真正要執行的時候仍是要看傳入的實參。

整個函數調用就是將實參傳遞給形參,完成計算後返回,而且打印返回值。

Python 中有不少內置的函數,好比咱們以前經常使用的 print()len()type()id() 等等。

這些函數都是內置的,無需咱們定義,因此能夠直接拿來使用。

參數的傳遞

按照位置順序傳遞

參數的傳遞有不少種方式,好比剛纔咱們調用時使用的就是按照位置順序傳遞。

add(1, 2)複製代碼

按照賦值傳遞

除了按照位置順序傳遞,咱們還能夠按照賦值來傳遞:

這裏咱們先定義一個減法函數。

def subtraction(a, b):
    return a - b


print(subtraction(b=5, a=10))複製代碼

打印結果以下:

5複製代碼

默認賦值

那麼除了以上兩種狀況,還有沒有其餘狀況?

固然還有,若是參數有兩個,可是其中一個可能不會傳遞,這時咱們能夠給它一個默認值。

這裏咱們定義一個除法:

def division(a, b=1):
    return a / b


print(division(5))
print(division(10, 5))複製代碼

在除法中,除數不能爲 0 ,否則會報錯,這裏咱們給了一個默認值是 1 ,當除數不存在的時候,咱們能夠取到默認值。

結果打印以下:

5.0
2.0複製代碼

變長度參數傳遞(元組)

這一塊是難點,注意聽,仔細看,看完細細品。

咱們先定義一個打印的函數:

def print_a(a, b):
    print(a, b)複製代碼

這時咱們能夠打印出來 a 和 b ,可是若是我如今不止想打印兩個參數了,我想打印 3 個參數,怎麼辦?

固然,咱們能夠給這個函數再加一個參數 c ,沒問題:

def print_a(a, b, c):
    print(a, b, c)複製代碼

問題又來了,若是我想打印 100 個參數怎麼辦?

emmmmmmmmm,要麼咱們就加 100 個形參?

固然不是這麼寫啦,咱們能夠在參數 b 前面加一個 * ,表示這個參數是可變長參數,當前面的參數都賦值結束後,剩下的參數順次給這個參數賦值。

def print_a(a, *b):
    print(a, b)


print_a(1, 2, 3, 4, 5, 6)複製代碼

輸出結果以下:

1 (2, 3, 4, 5, 6)複製代碼

看到沒,這裏剩餘的參數被轉換成了元組的形式進行了輸出打印。

變長度參數傳遞(字典)

咱們還能夠給這個參數前面加兩個 * ,表示這個參數能夠傳遞的數據類型是以字典的形式傳遞的。

def print_b(a, **b):
    print_a(a, b)


print_b(1, q='q', w='w', e='e')複製代碼

打印結果以下:

1 ({'q': 'a', 'w': 'b', 'e': 'c'},)複製代碼

固然,變長參數傳遞時,元組和字典也能夠不存在,以下:

print_a(1)
print_b(1)複製代碼

結果以下:

1 ()
1 ({},)複製代碼

這時,打印出來的就是空元組和空字符串了。

但願各位同窗必定要本身動手敲代碼。

示例代碼

本系列的全部代碼小編都會放在代碼管理倉庫 Github 和 Gitee 上,方便你們取用。

示例代碼-Github

示例代碼-Gitee

若是個人文章對您有幫助,請掃碼關注下做者的公衆號:獲取最新干貨推送:)
相關文章
相關標籤/搜索