Python函數初

來源:互聯網
上載者:User

標籤:執行   else   inpu   +=   練習   逗號   \n   陷阱   使用   

什麼是函數?

  先提出一個小練習,不用內建方法,來求一個字串的長度,比如求s  =  ‘djskdflsdjfslkjgls‘,我們可以用多種方法求取,比如:

1 count = 02 s = ‘djskdflsdjfslkjgls‘3 for i in s:4     count += 15 print(count)

通過上面的for迴圈,我們可以很方便的計算出結果。

若我們用python的內建函數len(),則只使用一個指令即可求出結果。如果我們用如下方法做時:

1 def my_len():2     l = [1, 2, 3, 4, 5, 6, 7, 8]3     count = 04     for i in l:5         count += 16     print(count)7 my_len()  

當我們直接使用調用我們定義的my_len()方法時,其結果也可以直接擷取。

這裡,我們將my_len()稱為執行函數,其組成是由 :函數名()

通過上面分析,我們知道函數有很多優點,總結起來可分為兩點:

1. 函數可以減少代碼的重複性

2. 函數可以增強代碼的閱讀性

函數到底是什嗎?其主要目的是什嗎?接下來我們做一個詳解。

函數其主要的目的就是為了將使用者的需求用代碼錶示出來,然後將其封裝,提供一個函數介面,供使用者後續直接調用。 

1 def func():2     print(‘111‘)3     print(‘222‘)4 func(

上述函數中,函數執行的功能只是將需要顯示的內容列印出來。但是通常執行函數後,希望將執行結果給輸出,這樣,我們就要引進函數的傳回值:return

return 有什麼功能呢?

1. 函數中如果遇到return,則直接結束函數

2. 給函數中的執行者(函數名():整體是函數的執行者)傳回值

3. return 返回單個值,即原封不動的返回(是什麼類型,就返回什麼類型值)

4. return 返回多個值,即返回一個元組,所有值都是元組的一個元素

註:在工作中,通常函數盡量不要使用print。

對以上return分別舉例:

1. 函數中如果遇到return,則直接結束函數

1 def func():2     print(‘111‘)3     print(‘222‘)4     return5     print(‘333‘)6 func()

函數執行的結果為:111,222。函數執行後,當遇到return,直接結束函數,後面語句不再執行。

2 return 返回單個值

 1 def func_1(): 2     a = 1 3     b = 2 4     c = a + b 5     d = [1,2,3] 6     e = (4,5,6,7) 7     f = ‘olin‘ 8     g = ‘ beault‘ 9     h = f + g10     return h11 print(func_1())

3 return多個值,返回的是一個元組

1 def func_1():2     a = 13     b = 24     d = [1,2,3]5     e = (4,5,6,7)6     f = ‘Colin‘7     return a,d,e,f8 print(func_1())

上面的代碼執行結果為:(1, [1, 2, 3], (4, 5, 6, 7), ‘Colin‘) ,多個值返回的是一個元組,每個值是元組的一個元素。

函數的傳參

函數的參數分為:函數實參與函數形參。

實參:函數執行者(實參)實際的參數

形參:定義函數時,括弧裡面的參數

實參

對於實參,通常有三種表示方式:

1. 位置參數

2. 關鍵字參數

3. 混合參數

位置參數:要求:按照順序,一一對應

1 def func1(x, y):2     print(x, y )3 func1(1,2)
1 def add(x, y):2     c = x +y3     return c4 print(‘x + y =‘, add(1, 2))
1 def max(x, y):2     if x > y:3         c = x4     else:5         c = y6     return c7 print(‘較大的值為:‘, max(32, 45))

關鍵字參數:要求:可以不按照順序,但是必須一一對應

1 def func1(x, y):2     return x + y3 print(func1(y = 100, x = 32))

混合參數:要求:關鍵字參數一定要在位置參數之後

1 def func1(a, b, x, y):2     return a + b + x + y3 print(func1(100, 56, y = 100, x = 32))4 5 def func1(a, b, name, x, y):6     return a + b + x + y7 name = ‘Colin‘8 print(func1(100, 56, name, y = 100, x = 32))  # name 是位置參數
形參

從形參角度去分析,形參主要分為位置參數與預設參數兩種。

位置參數:按照順序一一對應

1 def func(x, y ,z):2     print(x, y,z)3 func(1,2,3)

預設參數:給其傳值,將原預設參數覆蓋,不傳值時不報錯,使用預設值

1 def func1(x, y, a = 666):2     print(x, y, a)3 func1(1, 2)4 func1(1, 2, 256)

應用場合 :不經常改變的參數,但是一直再用。

下面提供一個要求,需要不斷輸入個人資訊,如姓名與性別。並將資訊寫入檔案中。

方法1:不使用函數功能

 1 while 1: 2     name, sex = input(‘請輸入姓名與性別,中間用逗號分隔:‘).strip().replace(‘,‘,‘,‘).split(‘,‘) 3     if name.upper() == ‘Q‘: 4         break 5     with open(‘a1.txt‘,encoding=‘utf-8‘,mode= ‘a‘) as f1: 6         f1.write(‘{}|{}\n‘.format(name, sex)) 7     if sex.strip(): 8         namelist(name, sex) 9     else:10         namelist(name)11     namelist(name, sex)

方法2:使用函數功能

 1 def namelist(name, sex = ‘男‘): 2     with open(‘a1.txt‘, encoding=‘utf-8‘, mode=‘a‘) as f1: 3         f1.write(‘{}|{}\n‘.format(name, sex)) 4 while 1: 5     name, sex = input(‘請輸入姓名,性別‘).strip().replace(‘,‘, ‘,‘).split(‘,‘) 6     if name.upper() == ‘Q‘: break 7     if sex.strip(): 8         namelist(name, sex) 9     else:10         namelist(name)11     namelist(name, sex)
預設參數的陷阱

預設參數若是可變資料類型(如:list),但他始終使用的是一個,即預設參數共用一個記憶體位址。

1 def func1(x, l1 = []):2     l1.append(x)3     return l14 ret = func1(1)5 print(ret,id(ret))   # [1] 18351409801046 ret2 = func1(100)7 print(ret2,id(ret2))  # [1, 100] 1835140980104

 

Python函數初

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.