python的函數及參數


函數式編程最重要的是增強代碼的重用性和可讀性

1 def 函數名(參數):
2      
3     ...
4     函數體
5     ...

函數的定義主要有如下要點:

  • def:表示函數的關鍵字
  • 函數名:函數的名稱,日后根據函數名調用函數
  • 函數體:函數中進行一系列的邏輯計算,如:發送郵件、計算出 [11,22,38,888,2]中的最大數等...
  • 參數:為函數體提供數據
  • 返回值:當函數執行完畢后,可以給調用者返回數據。

以上要點中,比較重要有參數和返回值:

1、返回值

函數是一個功能塊,該功能到底執行成功與否,需要通過返回值來告知調用者。

def 發送短信():
     
    發送短信的代碼...
 
    if 發送成功:
        return True
    else:
        return False
 
 
while True:
     
    # 每次執行發送短信函數,都會將返回值自動賦值給result
    # 之后,可以根據result來寫日志,或重發等操作
 
    result = 發送短信()
    if result == False:
        記錄日志,短信發送失敗...
return example

2.參數

函數的有三中不同的參數:

  • 普通參數
  • 默認參數
  • 動態參數

普通參數:

普通參數的傳遞並沒有個數和數據類型的限制,可以傳遞字符串,數字,列表和字典。也不限定個數,需要注意的是:函數需要多少參數,調用的時候就要按照它定義時的順序和數據類型傳遞過去。

 1 def argtest(name,age,fruit_lst,hobby_dic):
 2     print 'Hello,me name is %s,i\'m %d year\'s old'%(name,age)
 3     print 'My favorite fruits are : %s'%'.'.join(fruit_lst)
 4     print 'My hobbies:'
 5     for hobby in hobby_dic:
 6         print '\t%s'%hobby_dic[hobby]
 7 
 8 lst = ['apple','banana','watermelon']
 9 dic = {'hobby one':'teaism','hobby two':'sing'}
10 argtest('Eva_J',18,lst,dic)

輸出的內容:
Hello,me name is Eva_J,i'm 18 year's old
My favorite fruits are : apple.banana.watermelon
My hobbies:
 teaism
 sing

默認參數:
默認參數是給參數加上一個默認的值,但我們調用函數的時候,如果傳遞了這個參數,那么使用我們傳遞過來的值;如果不傳則使用默認的值,默認參數可以有多個,但是必須放在所有參數的最后。當我們有多個默認參數的時候,調用函數的時候可以使用參數名指定其中的某一個參數,以保證參數能准確的傳遞給被調用的函數。

1 def argvtest(argv1,argv2 = 'aaa',argv3 = 'bbb'):
2     print 'argv1:',argv1
3     print 'argv2:',argv2
4     print 'argv3:',argv3
5 
6 argvtest('a1',argv3 = 'a2')

輸出的內容:
argv1: a1
argv2: aaa
argv3: a2

動態參數:
def func(*args) 接受多個參數,內部自動構造元組,序列前加*,避免內部構造元組
def func(**kwargs) 接收多個參數,內部自動構造字典,序列前加**,直接傳遞字典
def func(*args,**kwargs):接受多個參數,既可以自動構造元組,又可以自動構造字典。

下圖從左至右展示了自動構造元組,自動構造字典及前兩者綜合的參數傳遞方式:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM