*args**kwargs到底是什么意思?

根据Python文档,从表面上看,它传递了一组参数.

def foo(hello, *args):
    print hello

    for each in args:
        print each

if __name__ == '__main__':
    foo("LOVE", ["lol", "lololol"])

这个打印出来:

LOVE
['lol', 'lololol']

您如何有效地使用它们?

推荐答案

*args和/或**kwargs作为函数定义的参数列表中的最后一项,允许该函数接受任意数量的参数和/或关键字参数.

例如,如果您想编写一个返回其所有参数之和的函数,无论您提供了多少参数,都可以这样编写:

def my_sum(*args):
    return sum(args)

它可能更常用于面向对象的编程中,当您要覆盖一个函数,并且希望使用用户传入的任何参数调用原始函数时.

你实际上不需要叫他们argskwargs,这只是一个惯例.是***产生了魔力.

Python的官方文档有a more in-depth look个.

Python相关问答推荐

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

将整组数组拆分为最小值与最大值之和的子数组

在Google Colab中设置Llama-2出现问题-加载判断点碎片时Cell-run失败

将图像拖到另一个图像

如何使用数组的最小条目拆分数组

使用groupby Pandas的一些操作

删除字符串中第一次出现单词后的所有内容

在np数组上实现无重叠的二维滑动窗口

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

如何让这个星型模式在Python中只使用一个for循环?

如何在表中添加重复的列?

如何使regex代码只适用于空的目标单元格

Python—在嵌套列表中添加相同索引的元素,然后计算平均值

PySpark:如何最有效地读取不同列位置的多个CSV文件

极点替换值大于组内另一个极点数据帧的最大值

如何防止html代码出现在quarto gfm报告中的pandas表之上

PYTHON中的pd.wide_to_long比较慢

如何在表单中添加管理员风格的输入(PDF)

根据边界点的属性将图划分为子图

牛郎星直方图中分类列的设置顺序