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