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

 

posted @ 2018-07-02 15:36  虫儿要吃草  阅读(5108)  评论(0编辑  收藏  举报