转载:http://blog.ithomer.net/2014/10/python-function-argskwargs/
当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#!/usr/bin/env python
# -*- coding:utf8 -*-
# coding=utf8
# blog.ithomer.net
# 当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值
def
fun_var_args(farg,
*
args):
print
'args:'
, farg
for
value
in
args:
print
'args_2:'
, value
# *args可以当作可容纳多个变量组成的list或tuple
fun_var_args(
1
,
'two'
,
3
,
None
)
# 输出:
# args: 1
# args_2: two
# args_2: 3
# args_2: None
def
fun_var_kwargs(farg,
*
*
kwargs):
print
'args:'
, farg
for
key
in
kwargs:
print
'args_2: %s:%s'
%
(key, kwargs[key])
# myarg1,myarg2和myarg3被视为key, **kwargs可以看作容纳多个key和value的dictionary
fun_var_kwargs(
1
, myarg1
=
'two'
, myarg2
=
3
, myarg3
=
None
)
# 输出:
# args: 1
# args_2: myarg1:two
# args_2: myarg2:3
# args_2: myarg3:None
def
fun_args(arg1, arg2, arg3):
print
'arg1:'
, arg1
print
'arg2:'
, arg2
print
'arg3:'
, arg3
myargs
=
[
'1'
,
'two'
,
None
]
# 定义列表
fun_args(
*
myargs)
# 输出:
#arg1: 1
#arg2: two
#arg3: None
mykwargs
=
{
'arg1'
:
'1'
,
'arg2'
:
'two'
,
'arg3'
:
None
}
# 定义字典类型
fun_args(
*
*
mykwargs)
# 输出:
#arg1: 1
#arg2: two
#arg3: None
# 两者都有
def
fun_args_kwargs(
*
args,
*
*
kwargs):
print
'args:'
, args
print
'kwargs:'
, kwargs
args
=
[
1
,
2
,
3
,
4
]
kwargs
=
{
'name'
:
'ithomer'
,
'age'
:
22
}
fun_args_kwargs(args,kwargs)
# args: ([1, 2, 3, 4], {'age': 22, 'name': 'ithomer'})
# kwargs: {}
fun_args_kwargs(
1
,
2
,
3
,a
=
100
)
#args: (1, 2, 3)
#kwargs: {'a': 100}
fun_args_kwargs(
*
(
1
,
2
,
3
,
4
),
*
*
{
'a'
:
None
})
#args: (1, 2, 3, 4)
#kwargs: {'a': None}
|