python 函数的*args,**kwargs

转载: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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值