函数的参数
1.形参与实参
定义函数时,函数名后面括号中的变量名称叫做形式参数,即“形参”(parameters);调用函数时,函数名后面括号中的变量名称叫做实际参数,即“实参”(arguments)。
def mu(a,b): //形参
print(a*b)
mu(2,3) //实参
6
形参是没有赋予实际值的,当参数被赋予实际的数值后,会由形参转化为实参。
参数传递的过程,就是把实参的引用传递给形参,使用实参的值来执行函数体的过程。
以下几个是调用函数时可使用的正式参数类型
2.必需参数
必须参数必须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
例如printme()函数,必须传入一个参数,否则会出现语法错误
def printme( str ):
print (str)
return
# 调用 printme 函数,不加参数会报错
printme()
3.默认参数(缺省参数)
调用函数时,如果没有传递参数,则会使用默认参数。
定义函数时,可以给某个参数赋值一个默认值,具有默认值的参数叫做缺省参数。
注意:要使用最常见的值作为默认值,以简化函数的调用;如果一个参数值不能够确定,则不应该设置默认值。
必须保证带有默认值的缺省参数在参数列表的末尾。
def printinfo( name, age = 20 ):
print("name:",name)
print("age:",age)
return
以上程序的运行结果:
4.关键字参数
如果不想严格按照顺序传递参数,也可以按关键字传递。
使用关键字参数允许函数调用时参数的顺序与声明时不一致:用参数名匹配参数值。
def fun(a,b):
print(a+b)
fun(b = 3,a = 6)
5.不定长参数
当函数需要处理的参数个数不确定时,可以使用不定长参数(多值参数)。
两种多值参数:
接收元组:参数名前加一个*
接收字典:参数名前加两个*
*args — 存放 元组 参数
**kwargs
— 存放 字典 参数,(kw
即keyword
,kwargs
即 键值对参数)
(args、kwargs不是固定的名称,可以更改。)
当要同时使用 * args 和 * * kwargs 时, * args 必须写在 * * kwargs 之前。
*和**都只能出现一次。
def first(num,*args,**kwargs):
print(num)
print(args)
print(kwargs)
first(1,2,3,4,1,name = "ming",age = 18)