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 ##--------------------------------------------