“可变数量参数”和“关键字参数”

本文解释了Python中可变数量参数*args和**kwargs的作用,前者收集所有位置参数形成元组,后者收集关键字参数形成字典。同时指出,*args必须在**kwargs之前使用,且两者是非必要参数。

形式参数可以理解为:

               在函数定义时候,利用一个临时的变量来代替未来如要传入的变量,演绎函数内部计算过程的。

def sum(a,b):
    return a+b

        由于这部分比较简单,我们不过多赘述,我们主要讲一讲可变数量参数,以及关键字参数。在python中,可变数量参数表现为*args,关键字参数表现为**kwargs。那他们有什么作用呢?

        

1.* args作用:表示这个参数会收集传递给函数的所有额外位置参数,并将它们放入一个元组中。

def my_function(*args):  
    for arg in args:  
        print(arg)  
  
my_function(1, 2, 3)  # 输出:1, 2, 3

2.*kwargs作用:表示这个参数会收集传递给函数的所有额外关键字参数,并将它们放入一个字典中。

def my_function(**kwargs):  
    for key, value in kwargs.items():  
        print(f"{key} = {value}")  
  
my_function(a=1, b=2, c=3)  # 输出:a = 1, b = 2, c = 3

        也就是可以理解为在函数内部建立一个元组或者字典,这个元组或字典的元素来源于函数传入的参数,这里如果出现* args,*kwargs同时出现时,* args必须放在*kwargs,否则会报错。

        当然,也这两个参数是非必要参数,即可以为空当我们为空时,args为( ),kwargs为[ ]。

### Python可变位置参数 `*args` 可变关键字参数 `**kwargs` #### 函数定义中的顺序 在函数定义中,`*args` 应该位于 `**kwargs` 之前。这是因为 `*args` 接收所有的未命名参数作为元组,而 `**kwargs` 则接收所有命名参数作为字典[^1]。 ```python def example_function(*args, **kwargs): print(f"Positional arguments (as tuple): {args}") print(f"Keyword arguments (as dict): {kwargs}") ``` #### 使用 `*args` 处理不定数量的位置参数 `*args` 参数允许函数接受任意多个非关键字(即位置)参数。这些额外的参数会被收集到一个元组中并赋值给名为 `args` 的变量。 ```python def sum_all(*numbers): total = sum(numbers) return total result = sum_all(1, 2, 3, 4) # 调用时可以传递任意多的位置参数 print(result) # 输出: 10 ``` #### 使用 `**kwargs` 来处理不定数量关键字参数 另一方面,`**kwargs` 让开发者能够捕获任何多余的关键字参数,并将它们存储在一个字典里,键为参数名称,值则对应于所传入的具体数值。 ```python def greet_user(**user_info): first_name = user_info.get('first', 'Unknown') last_name = user_info.get('last', '') age = user_info.get('age', None) message = f"Greetings, {first_name} {last_name}" if age is not None: message += f", you are {age} years old." print(message) greet_user(first="Alice", last="Smith") # 正常情况下的调用 greet_user(last="Brown", first="Bob", age=30) # 增加了一个额外的关键字参数 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值