本文共 1564 字,大约阅读时间需要 5 分钟。
在Python编程中,*args和**kwargs是用来处理可变长参数的强大工具。它们分别用于传递位置参数和关键字参数,能够让函数接收任意数量的输入,极大地提高了函数的灵活性。
*args可以接收一个或多个不带命名的位置参数。这些参数会被传递为一个元组。例如,定义一个函数:
def test_var_args(farg, *args): print("formal arg:", farg) for arg in args: print("another arg:", arg) 当调用时,传递一个位置参数以及多个额外参数:
test_var_args(1, "xiaobei", 28)
输出结果为:
formal arg: 1another arg: xiaobeianother arg: 28
**kwargs用于接收一个或多个带命名的关键字参数。这些参数会被传递为一个字典。例如,定义一个函数:
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="xiaobei", myarg3=3)
输出结果为:
formal arg: 1another keyword arg: myarg2: xiaobeianother keyword arg: myarg3: 3
在实际调用函数时,可以通过*args和**kwargs来灵活传递参数。例如:
def test_var_args_call(arg1, arg2, arg3): print("arg1:", arg1) print("arg2:", arg2) print("arg3:", arg3) 当需要传递多个位置参数时,可以将其包装为一个元组:
args = ("hanxiaobei", 28)test_var_args_call(1, *args) 输出结果为:
arg1: 1arg2: hanxiaobeiarg3: 28
同样,当需要传递多个关键字参数时,可以将其包装为一个字典:
kwargs = { "arg3": 35, "arg2": "xiaobei"}test_var_args_call(1, **kwargs) 输出结果为:
arg1: 1arg2: xiaobeiarg3: 35
以下是一个实用的示例,展示了如何利用*args接收任意数量的数并计算乘积:
def product(*args): total = 1 for num in args: total *= num print(total)
当调用时,传递多个数:
product(2, 6, 3, 4, 5, 6, 3, 1, 2, 34, 43, 57)
输出结果为:
12*6=1212*3=3636*4=144144*5=720720*6=43204320*3=1296012960*1=1296012960*2=2592025920*34=881280881280*43=3793304037933040*57=2164289280
最后的乘积为2164289280。
转载地址:http://rnlfk.baihongyu.com/