函数----形参和实参,位置参数与关键字参数
程序员文章站
2022-07-05 20:02:19
...
1.形参和实参
形参:函数完成其工作时所需的一项信息,不占用内存空间,只有在被调用时才会占用内存空间,调用完了即被释放。
实参:实际参数,调用函数时传给函数的信息
例如:
def hello(name):#name是形参
print(name)
hello("lian") #"lian"是实参
2.位置参数和关键字参数
位置参数: 在调用函数时,Python必须将每个实参都关联到函数定义的一个形参中,最简单的关联方式就是基于实参的顺序。
关键字参数 :传递给函数的是键值对。由于在实参中的将名称和值关联起来,所以在传入时无需考虑顺序。
举例
def hello(name1,name2):
pass
hello("lian","zong") #位置实参
hello(name1="lian",name2="zong") # 关键字参数
位置参数和关键字参数混合使用时:
1、位置参数必须写在关键字参数的左边
2、同一个参数不能两次或者多次传值,只能传一次
def hello(name,age,height):
pass
hello("lian",age = 20,height = 175) #正确的混合方式
hello(name = "lian",20,height = 175)#错误的方式,位置参数必须放在关键字左边,否则报错
3.参数组
* 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。
** 的作用则是把字典 kwargs 变成关键字参数传递。
def calc(x,y,*args):
res =x+y
print(x,y,args)#*args-->多于的参数,位置参数传入,以元组的形式接收
calc(1,2,7,8,6)
calc(2,3,{"name":"alex"}) #即使传入字典,字典当成整体也会以元组的方式被接收
calc(3,4,["alex","James"],"hello world")
calc(3,4,*["alex","James"]) #相当于该列表遍历,逐个添加至列表并且转为元组
calc(3,4,*"alex")
def calc(x,y,**kwargs):
res =x+y
#print(x,y)
print(x,y,kwargs)#**kwargs-->多于的参数,位置参数传入,以字典的形式接收
return res
calc(x=1,y=3,name="alex")
calc(1,2,**{"name":"Amanda"})