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
)