Python——参数函数(可变参数)

可变参数

在某些情况下我们不能在定义函数的时候就确定参数的数量和内容,这时候就可以使用可变参数。可变参数和前面介绍的例子有些许不同,可变参数声明时不会命名。
基本语法如下:

some_func(*args, **kwargs)

参数说明:

  • “some_func”为函数名
  • “*args”和“**kwargs”为可变参数

让我们先看一下“*args”会输出什么。

def foo(*args):
    print(args)
    
foo()

foo(1, 2)

foo("小逢", "xianning", 19)

执行结果如下:

()
(1, 2)
('小逢', 'xianning', 19)

从例子中可以看到,“*args”参数获取得到的是一个元组,这也正是它能作为可变参数的原因。
让我们再看一下“**kwargs”会输出什么:

def foo(**kwargs):
    print(kwargs)

foo()

foo(name="小逢")

执行结果如下:

{}
{'name': '小逢'}

从例子中可以看到,“**kwargs”参数获取得到的是一个字典,所以我们在调用函数时也必须要使用关键字参数的方法来传递参数。
在日常使用中,“*args”和“**kwargs”经常出现,用于解决一些未知的情况。

def calculate_sum(*args, **kwargs):
    s = 0
    for i in args:
        s += i
    print("输入的数字之和是", s)
    for k, v in kwargs.items():
        print(k, v)

calculate_sum(1,2,3,4,5, 姓名="小逢")

执行结果如下:

输入的数字之和是 15
姓名 小逢

正如上面的示例,我们在不知道有多少数字需要求和的情况下巧妙使用了可变参数来获取参数中所有数字的和。
不只在函数定义时可以使用“*”与“**”来声明参数,在函数调用时我们也可以使用相同的方式来传递未知的参数。

def exp(*args, **kwargs):
    print(args)
    print(kwargs)

l = [1,2,3,4]
d = {
    "参数1": "arg1",
    "参数2": "arg2"
}
exp(*l, **d)

执行结果如下:

(1, 2, 3, 4)
{'参数1': 'arg1', '参数2': 'arg2'}

由此可以看到,无论是参数调用还是函数定义的参数都能以some_func(*args, **kwargs)的形式调用。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值