args就是所有参数的数组,kwargs就是当你传入key=value是存储的字典,当函数的参数不确定时,可以使用*args 和kwargs,*args 没有key值,kwargs有key值
1
2
3
4
5
6
|
def
fun_var_args
(
farg
,
*
args
)
:
print
"arg:"
,
farg
for
value
in
args
:
print
"another arg:"
,
value
fun_var_args
(
1
,
"two"
,
3
)
# *args可以当作可容纳多个变量组成的list
|
result:
1
2
3
|
arg
:
1
another
arg
:
two
another
arg
:
3
|
**kwargs:
1
2
3
4
5
6
7
|
def
fun_var_kwargs
(
farg
,
*
*
kwargs
)
:
print
"arg:"
,
farg
for
key
in
kwargs
:
print
"another keyword arg: %s: %s"
%
(
key
,
kwargs
[
key
]
)
fun_var_kwargs
(
farg
=
1
,
myarg2
=
"two"
,
myarg3
=
3
)
# myarg2和myarg3被视为key, 感觉**kwargs可以当作容纳多个key和value的dictionary
|
result:
1
2
3
|
arg
:
1
another
keyword
arg
:
myarg2
:
two
another
keyword
arg
:
myarg3
:
3
|
也可以用下面的形式:
1
2
3
4
5
6
7
8
|
def
fun_var_args_call
(
arg1
,
arg2
,
arg3
)
:
print
"arg1:"
,
arg1
print
"arg2:"
,
arg2
print
"arg3:"
,
arg3
args
=
[
"two"
,
3
]
#list
fun_var_args_call
(
1
,
*
args
)
|
result:
1
2
3
|
arg1
:
1
arg2
:
two
arg3
:
3
|
1
2
3
4
5
6
7
8
|
def
fun_var_args_call
(
arg1
,
arg2
,
arg3
)
:
print
"arg1:"
,
arg1
print
"arg2:"
,
arg2
print
"arg3:"
,
arg3
kwargs
=
{
"arg3"
:
3
,
"arg2"
:
"two"
}
# dictionary
fun_var_args_call
(
1
,
*
*
kwargs
)
|
result:
1
2
3
|
arg1
:
1
arg2
:
"two"
arg3
:
3
|