人生苦短,我選Pythonpython
前文傳送門git
小白學 Python(1):開篇github
跟各位同窗講一個好消息,當你看到這篇連載的時候,整個 Python 基礎內容部分已通過大半了。
但願各位同窗再接再礪,努力把剩下的部分也看完。
提到函數,沒有接觸過編程的同窗會不會想到這個:
y = f(x)
可是,咱們在 Python 中使用到的函數和數學中的函數沒有半毛錢關係(額,可能稍微有點關係)。
在 Python 中,咱們使用函數是爲了簡化問題,將同一類的操做定義爲一個函數,在遇到相同的問題調用對應的函數,相似於 y = f(x)
,x = 1
的時候 y = 1
, x = 2
的時候 y = 2
。
因此,函數就是重複使用的代碼。
定義函數的規則以下:
()
。 定義一個函數大體長這樣:
def 函數名(形式參數):
函數體
return 返回值複製代碼
def
是系統關鍵字,至於什麼是系統關鍵字後面咱們再聊,這裏僅須要知道 def
是用來定義函數的便可。
系統關鍵字在 PyCharm 中都會高亮顯示,若是沒有高亮,那麼必定是你打錯了。
好比咱們如今定義一個求兩數之和的函數:
def add(a, b):
c = a + b
return c複製代碼
這個有看不懂的麼?
沒有的話我就接着往下聊了,有的話就給我留言吧。
以上咱們就完成了一個函數的定義。
函數定義好之後咱們還須要調用函數才能執行,一個函數放在那裏是不會自動執行的。
廢話,我哪知道你要傳什麼參數過來。。。
咱們調用一下剛纔寫好的函數:
c = add(1, 2)
print(c)複製代碼
打印結果以下:
3複製代碼
這裏咱們介紹兩個名詞:
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 上,方便你們取用。