python 函数的*args,**kwargs

来源:互联网 发布:sys wait.h windows 编辑:程序博客网 时间:2024/05/16 10:44

转载: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值
 
deffun_var_args(farg, *args):
    print'args:', farg
    forvalue inargs:
        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
 
  
deffun_var_kwargs(farg, **kwargs):
    print'args:', farg
    forkey inkwargs:
        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
 
 
deffun_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
  
  
# 两者都有
deffun_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}

0 0