参数:配合函数内部代码运行必要的值
参数分为:
''' 函数star_arry(row,column)的功能是需要打印行M列的全‘0’矩阵。 行数和列数由调用者来设定。 ''' def star_arry(row , column): i = 0 while i<row: j = 0 while j <column: print("0",end=' ') j+=1 print() i+=1 star_arry(10,9)
上面这个例子中,行数和列数在我们调用函数时确定,传入两个数字按照位置对应row和column,在函数执行的时候,我们传入的两个实际的数字也就是实参,对应函数内部两个变量的名,相当于我们给函数内部两个变量row和column分别赋值。这种传参方式是实参与形参之间是按照位置严格对应的。
def star_arry(row=10 , column=10):#在此处 ... #此处代码与示例一相同 pass star_arry() star_arry(9,7) 示例一中如果不传入参数的话,程序报错,这个程序不传入参数,打印10行10列的全零矩阵 有传入数值的话,按传入数值来打印矩阵
函数的定义处
默认形参必须跟在普通形参的身后,顺序是一定的,顺序反掉的话会直接报错。
示例三
def star_arry(row , column=10): ... #此处代码与示例一相同 pass star_arry(8) star_arry(5,7) 此种情况下至少传入一个位置参数。
关键字实参是对具体的某个参数赋值,具体的顺序可以打。
示例四:
def star_arry(row,column,a,b,c):#函数定义处 ... #此处代码与示例一相同 pass star_arry(column=8,row=7,b = 4,a = 3,c= 1)#函数调用处
值得注意的是函数定义时,和函数调用时参数的位置可以互换,但是形参和实参要对应,不可增加也不可减少。
def star_arry(row,a,b,c,column=10): ... #此处代码与示例一相同 pass star_arry(8,1,row=7,b = 4,c= 1)
注意:关键字实参必须跟在普通实参的身后,顺序是一定的
默认参数和关键字实参 在写法上一模一样
一个是在函数的定义处
一个是在函数的调用处
收集参数:
*
def func(*args): code *args => arguments(参数)
在args这个参数的前面加上一个*表达普通收集参数,形成一个元组 基本使用
def func(a,b,c,*args): print(a,b,c) print(args) func(1,2,3,4,5,5,6,7,8) 在func这个函数调用的时候,1,2,3分别对应的位置形式参数4,5,5,6,7,8没对应的形式参数,被*args收集成为了一个元组。 #运行结果 1 2 3 (4, 5, 5, 6, 7, 8)
计算任意个数的累加和
def func(*args): total = 0 for i in args: total += i print(total) def func(*args): total = 0 for i in args: total += i print(total) func(-429,78,352,76,345,234,76,863,274) #运行结果: 1869
def func(**kwargs): code1... **kwargs => keyword arguments
在kwargs参数的前面加上2个**表达关键字收集参数,形成一个字典
def func(a=1,b=2,c=3,**kwargs): print(a,b,c) print(kwargs) # {'f': 1, 'g': 2, 'j': 3} func(f=1,g=2,j=3,a=15,b=16,c=17) #运行结果 15 16 17 {'f': 1, 'g': 2, 'j': 3}
(1)def func(a,b,*,c) c是命名关键字 (2)def func(*args,c,**kwargs) c是命名关键字参数
在函数调用时,必须使用命名关键字参数来进行赋值
定义方式一
def func(a,b,*,d,c): print(a,b) print(d) print(c) func(1,2,d = 3,c=10)
定义方式二
def func(*args,c,**kwargs): print(args) print(c) print(kwargs) func(1,2,3,4,5,6,a=1,b=2,d=6,c=100) 运行结果 (1, 2, 3, 4, 5, 6) 100**加粗样式** {'a': 1, 'b': 2, 'd': 6}
关于* 和 ** 的使用方法