python中的参数:形参实参
形参:
形式上的参数,可以理解为数学中的x,没有实际的值,通过别人赋值后才有意义。相当于变量
实参:
实际意义上的参数,是一个世纪存在的参数,可以是字符串或者数字等。
就是在函数名中定义一个形参,然后在函数调用的时候,给函数名中的形参传递一个实际的参数,这个就是实参。这样的话执行函数时就会使用参数执行相应的操作。
def func(a): #a是形参
print(a)
func(1) #1是实参
#代码运行结果为:1
形参中*的作用:
def func(a, *args):
print(a)
print(args)
func(1,2,3,4)
#把1传给a,把2,3,4传给*args
1、*args是可变参数,args接收的是一个元组;
2、**kw是关键字参数,kw接收的是一个字典;
3、在 lambda 表达式中使用 *和 **,lambda 表达式可以当作一个匿名函数。只要是函数都可以传参。
实参中*的作用
1、实参中的*号会获取可迭代对象的 key(索引/键值);
def func(n1, n2, n3, n4, n5):
return n1, n2, n3, n4, n5
d = {'n1': 5, 'n2': 6, 'n3': 7, 'n4': 8, 'n5': 9}
print(func(*d))
# 打印得到的结果为 ('n1', 'n2', 'n3', 'n4', 'n5')
由于获取的是可迭代对象的 key,所以函数的形参可以为位置参数或可变参数。
2、实参中的**会获取可迭代映射的值;
def func(n1, n2, n3, n4, n5):
return n1, n2, n3, n4, n5
d = {'n1': 5, 'n2': 6, 'n3': 7, 'n5': 8, 'n4': 9}
print(func(**d))
# 打印得到的结果为(5, 6, 7, 9, 8)
由于获取的是可迭代对象的值,所以函数的形参只能为关键字参数,即参数的个数和名称都是固定的。
参数的混合使用:
1、位置参数和可变参数
def func(a, *args):
print(a)
print(args)
func(1,2,3,4)
#把1传给a,把2,3,4传给*args
2、位置参数和默认参数
def func(a, b = 10):
print(a)
print(b)
func(1)
#把1传给a,但是b不变
3、默认参数和可变参数混合使用,默认参数在可变参数的右侧 ,需要用关键字指定参数
def func(*args, a):
print(args)
print(a)
func(1,2,3,a = 10)