How to use *args and **kwargs in Python?

How to use *args and **kwargs in Python

Or, How to use variable length argument lists in Python.

The special syntax, *args and **kwargs in function definitions is used to pass a variable number of arguments to a function. The single asterisk form (*args ) is used to pass a non-keyworded , variable-length argument list, and the double asterisk form is used to pass a keyworded , variable-length argument list. Here is an example of how to use the non-keyworded form. This example passes one formal (positional) argument, and two more variable length arguments.

def
 test_var_args
(
farg
,
 *
args
):

    print
 "formal arg:"
,
 farg

    for
 arg
 in
 args
:

        print
 "another arg:"
,
 arg


test_var_args
(
1
,
 "two"
,
 3
)

Results:

formal arg: 1
another arg: two
another arg: 3

 

Here is an example of how to use the keyworded form. Again, one formal argument and two keyworded variable arguments are passed.

def
 test_var_kwargs
(
farg
,
 **
kwargs
):

    print
 "formal arg:"
,
 farg

    for
 key
 in
 kwargs
:

        print
 "another keyword arg: 
%s
: 
%s
"
 %
 (
key
,
 kwargs
[
key
])


test_var_kwargs
(
farg
=
1
,
 myarg2
=
"two"
,
 myarg3
=
3
)

Results:

formal arg: 1
another keyword arg: myarg2: two
another keyword arg: myarg3: 3

 

Using *args and **kwargs when calling a function

This special syntax can be used, not only in function definitions, but also when calling a function.

def
 test_var_args_call
(
arg1
,
 arg2
,
 arg3
):

    print
 "arg1:"
,
 arg1

    print
 "arg2:"
,
 arg2

    print
 "arg3:"
,
 arg3


args
 =
 (
"two"
,
 3
)

test_var_args_call
(
1
,
 *
args
)

Results:

arg1: 1
arg2: two
arg3: 3

Here is an example using the keyworded form when calling a function:

def
 test_var_args_call
(
arg1
,
 arg2
,
 arg3
):

    print
 "arg1:"
,
 arg1

    print
 "arg2:"
,
 arg2

    print
 "arg3:"
,
 arg3


kwargs
 =
 {
"arg3"
:
 3
,
 "arg2"
:
 "two"
}

test_var_args_call
(
1
,
 **
kwargs
)

Results:

arg1: 1
arg2: two
arg3: 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值