形参:在定义函数时,括号内的参数成为形参
特点:形参就是变量名
def foo(x,y): #x=1,y=2
print(x)
print(y)
实参:在调用函数时,括号内的参数成为实参
特点:实参就是变量值
foo(1,2)
在调用阶段实参(变量值)才会绑定形参(变量名)
调用结束后,解除绑定
一、、函数形参分为:
1、位置形参
2、关键字形参
二、函数实参分为:
1、位置实参
2、关键字实参
def foo(x,y): #x、y为位置形参 print(x) print(y) foo(1,2)#位置实参 def foo(name,age): #x、y为关键字形参 print(name) print(age) foo(name=1,age=2)#位置形参
三、注意事项
1、位置实参必须在关键字实参的前面
2、一定不要给同一个形参赋多次值
四、默认参数
不用给函数传递参数,函数的参数默认带有值
def foo(x=1,y=2): #x、y为位置形参 print(x) print(y) foo()
注意事项:
默认参数必须放在位置参数之前
默认参数只能在函数定义阶段赋值一次,且仅有一次
默认参数应该定义为不可变数据类型
五、可变长参数类开
可变长参数指的是实参的个数多了
实参无非位置实参和关键字实参两种
#形参必须要两种机制来分别处理按照位置定义的实参溢出的情况:*
#跟按照关键字定义的实参溢出的情况:**
1、形参*接收多出来的位置参数转化为无组
2、多出来的关键字参数被**接收转化为字典
def foo(x,y,*args): #nums=(3,4,5,6,7) print(x) print(y) print(args) foo(1,2,3,4,5,6,7) def foo(x,y,**kwargs): #nums={'z':3,'b':2,'a':1} print(x) print(y) print(kwargs) foo(1,2,z=3,a=1,b=2) #**
六 命名关键参数
即在*后面定义的形参称为命名关键字参数,必须是被以关键字实参的形式传值
def foo(name,age,*args,sex='male',group): print(name) print(age) print(args) print(sex) print(group) foo('alex',18,19,20,300,group='group1')