(进)Python中的*args 和 **kwargs使用

本文详细介绍了Python中*args和**kwargs的用法,它们分别用于传递不定数量的位置参数和关键字参数。通过示例展示了如何在函数调用中使用它们,以及它们在函数定义中的位置规则。同时,提到了它们在编写函数装饰器等场景中的常见应用。
摘要由CSDN通过智能技术生成
简述

我先来告诉你一个事实, 其实并不是必须写成args 和kwargs。 只有变量前⾯的 (星号)才
是必须的。你也可以写成
var 和
vars, ⽽写成
args 和**kwargs只是⼀个通俗的命
名约定。 接下来我么一起聊聊。

*args解释

*args 是⽤来发送一个非键值对的可变数量的参数列表给一个函数

def test_var_args(f_arg,*args): #接受元组数据
...     print("first normal arg:",f_arg)
...     print("args normal:",args)
...     for arg in args:
...         print("another arg through *argv:",arg)
...         
>>> test_var_args("yangzhi","dad","dada","dad","ddddd")
first normal arg: yangzhi
args normal: ('dad', 'dada', 'dad', 'ddddd')
another arg through *argv: dad
another arg through *argv: dada
another arg through *argv: dad
another arg through *argv: ddddd
**kwargs解释

**kwargs简单描述,它就是用于接收一个字典类型的参数

>>> def greet_me(**kwargs):  #接受字典
...     for key,value in kwargs.items():
...         print("{}=={}".format(key,value))
...         
>>> greet_me(name="yangzhi")
name==yangzhi
使⽤ *args 和 **kwargs 来调⽤函数

那现在我们将看到怎样使⽤*args和**kwargs 来调⽤⼀个函数。 假设, 你有这样⼀个⼩函数:

*args
>>> def test_args_kwargs(arg1, arg2, arg3):
...     print("arg1:", arg1)
...     print("arg2:", arg2)
...     print("arg3:", arg3)
...     
>>> 
>>> 
>>> 
>>> args = ("yz", "hello", "world") # 定义元组变量
>>> test_args_kwargs(*args) # 调用结果如下
arg1: yz
arg2: hello
arg3: world

**kwargs
# 同一个函数
>>> def test_args_kwargs(arg1, arg2, arg3):
...     print("arg1:", arg1)
...     print("arg2:", arg2)
...     print("arg3:", arg3)
...  
# 定义键值对变量
>>> kwargs = {"arg1": "yz", "arg2": "China", "arg3":"HZ"}
>>> test_args_kwargs(**kwargs) # 调用执行得出以下结果
arg1: yz
arg2: China
arg3: HZ

列表支持
>>> args = ["yz", "hello", "world"]
>>> test_args_kwargs(*args)
arg1: yz
arg2: hello
arg3: world
总结
1. 什么时候使⽤它们,最常见的⽤例是在写函数装饰器的时候
2. *args和**kwargs可以同时在函数的定义中,但是*args必须在**kwargs前面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔幻云

告诉自己是时候输出知识啦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值