7 python函數參數(必須參數、可變參數、關鍵字參數)


  1 #python中的函數定義,使用和傳參
  2 
  3 ###------------------- 必要參數 -------------------------------------
  4 
  5 必要參數,即函數調用時必須要傳的參數,
  6 
  7 
  8  #下面進行舉例說明
  9  
 10  def helloWorld(a):
 11      print('輸出:hello')
 12  
 13  if __name__ == '__main__':
 14      helloWorld("aaa")   ## 必須要有參數
 15      
 16 ##------------  默認參數 -----------------------------------------------------------
 17 說明:
 18     1.必選參數在前,
 19     2,有多個默認參數時,調用的時候,既可以按順序提供默認參數
 20     3,也可以不按順序提供部分默認參數。當不按順序提供部分默認參數時,需要把參數名寫上
 21 
 22 例如:
 23 def enroll(name, gender, age=6, city='Beijing'):
 24     print('name:', name)
 25     print('gender:', gender)
 26     print('age:', age)
 27     print('city:', city)
 28 
 29 
 30 enroll('Bob', 'M', 7)
 31 enroll('Adam', 'M', city='Tianjin')
 32 
 33  
 34 特別重要:
 35     ###  定義默認參數要牢記一點:默認參數必須指向不變對象!
 36 
 37 例如:
 38 def add_end(L=[]):
 39     L.append('END')
 40     return L
 41 
 42 print (add_end())
 43 print (add_end())
 44 
 45 結果:
 46     ['END']
 47     ['END','END']
 48 
 49 原因說明:
 50     Python函數在定義的時候,默認參數L的值就被計算出來了,在每次調用時,L參數已經變前一次調用所更改了,
 51 
 52 所以:
 53     避免在函數里面去修改函數的默認參數值。
 54 
 55 
 56 ##--------------------- 關鍵字參數   --------------------------------------------
 57 
 58 
 59 def about(name,course,site):
 60     print (name,course,site)
 61 
 62 about('jim','100','www.baidu.com')   ## 必須按順序傳參
 63 about(site='www.baidu.com',name='green',course=100)   ##以關健字方式傳入參數(可以不按順序)
 64 
 65 
 66     
 67 
 68 ##-------------- 不定長參數(可變參數) (這些可變參數在函數調用時自動組裝為一個tuple)-----------------------------------------------------------
 69 
 70 顧名思義:
 71     可變參數就是傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。
 72 
 73 ###重要說明:
 74     (可變參數的好處是,不用事先准備好LIST或者元組)
 75     這些可變參數在函數調用時自動組裝為一個tuple
 76 
 77 定義:
 78 def loop(*args):
 79     for x in args:
 80         print x
 81 
 82 loop(1,2,3)
 83 
 84 結果是:
 85 1
 86 2
 87 3
 88 
 89 ###說明2:
 90     如果已經有了一個列表或者元組,怎么傳遞可變參數呢??? 如下:
 91 
 92 def loop(*args):
 93     for x in args:
 94         print x
 95 
 96 loop(1,2,3)
 97 a=[4,5,6]
 98 loop(*a) ##  這里要在列表 或元組 前面加* 連傳遞參數進來。
 99 
100 
101 
102 
103 ###------------------- 這也是不定長參數  ----------------------------------------------------------------
104 
105 說明:
106     這些關鍵字參數在函數內部自動組裝為一個dict
107 
108 函數定義:
109 def person(name, age, **kw):
110     print('name:', name, 'age:', age, 'other:', kw)
111 
112 調用1:
113 >>> person('Michael', 30)
114 name: Michael age: 30 other: {}
115 
116 調用2:
117 >>> person('Adam', 45, gender='M', job='Engineer')
118 name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
119 
120 調用3:
121 >>> extra = {'city': 'Beijing', 'job': 'Engineer'}  ---事先已經有了一個字典
122 >>> person('Jack', 24, **extra)                        ----  **extra表示把extra這個dict的所有key-value用關鍵字參數傳入到函數的**kw參數
123 name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
124 
125 ###調用說明:
126 **extra表示把extra這個dict的所有key-value用關鍵字參數傳入到函數的**kw參數,kw將獲得一個dict,
127 注意kw獲得的dict是extra的一份拷貝,對kw的改動不會影響到函數外的extra。
128 
129 
130 ##--------------------------------------------

 


免責聲明!

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



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