写点什么

蓝易云 - python 教程:可变参数 *args 和 **kwargs 详解

  • 2024-06-21
    四川
  • 本文字数:1069 字

    阅读完需:约 4 分钟

蓝易云 - python教程:可变参数*args 和 **kwargs详解

在 Python 编程中,你可能会遇到一些函数,它们需要处理数量不确定的参数。这时候就需要用到 Python 的可变参数 args 和*kwargs。这两个神秘的符号其实是 Python 中非常强大且灵活的工具,它们可以帮助你创建更加通用和灵活性强大的函数。


首先我们来看看 args。在 Python 中,“”符号是一个解包运算符,而“args”只是一个常用名字,并没有特殊含义。“*args”通常被用来传递数量不确定、非键值对形式(即位置参数)给函数。

让我们通过一个例子来理解一下:

def add(*nums):    total = 0    for num in nums:        total += num    return total
print(add(1, 2, 3, 4)) # 输出:10
复制代码

在上述代码中,“nums”实际上就是一个元组(tuple),包含了所有传入 add()函数内部作为位置参数(即按照顺序)给出的值。

接下来让我们探索 kwargs。“kwargs”的“”也同样表示解包运算符,“kwargs”的全称为 keyword arguments(关键字参数)。“kwargs"被使用于传递数量不定、键值对形式(即关键字参数)给函数。

再次通过例子理解:

def introduce(**person):    for key in person:        print(f"{key} is {person[key]}")
introduce(name="Tom", age=20, hobby="reading") # 输出:# name is Tom# age is 20# hobby is reading
复制代码

在这个例子中,“person”实际上是一个字典(dictionary),包含了所有传入 introduce()函数内部作为关键字参数给出的值。

args 和 kwargs 可以同时使用在一个函数中,但是 args 必须出现在 kwargs 前面。这是因为位置参数必须出现在关键字参数前面。

def func(*args, **kwargs):    for arg in args:        print(arg)    for key in kwargs:        print(f"{key} : {kwargs[key]}")
func(1, 2, 3, name='Tom', job='Engineer')
复制代码

此外,你还可以使用*来解包序列和映射类型的数据:

def func(a,b,c):    print(a,b,c)
args = [1,2]func(*args) # 输出:1 2
dict_args = {'a':3,'b':4,'c':5}func(**dict_args) # 输出:3 4 5
复制代码

总结一下,Python 中的可变参数 args 用于接收数量不定的非键值对形式(位置)参数;而可变参数*kwargs 用于接收数量不定、键值对形式(关键字)的数据。它们都能帮助我们创建更加灵活、通用性强大的函数。希望你能通过本文理解并掌握这两个重要的 Python 编程工具。

云服务器推荐

蓝易云国内/海外高防云服务器推荐


蓝易云-五网CN2服务器【点我购买】蓝易云采用KVM高性能架构,稳定可靠,安全无忧!蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。



海外免备案云服务器链接:www.tsyvps.com

蓝易云香港五网 CN2 GIA/GT 精品网络服务器。拒绝绕路,拒绝不稳定。

用户头像

百度搜索:蓝易云 2023-07-05 加入

香港五网CN2免备案服务器

评论

发布
暂无评论
蓝易云 - python教程:可变参数*args 和 **kwargs详解_Python_百度搜索:蓝易云_InfoQ写作社区