*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相关问答推荐

如何使用现代 Python 重定向模块导入?

二分搜索:没有得到非常大的值的上限和下限

cupy.asnumpy() 和 get() 之间的区别

按日期字段执行合并,而不在 DataFrame 中创建辅助列

如何在混合数据类型的 Python Pandas 数据框列中仅比较日期或仅忽略秒数的日期时间?

3级链式python导入失败

通过变量名从recarray中删除变量

如何使用正则表达式来识别不同行大括号之间的错误?

如何使用 sys.argv 将字符串变量从 shell 脚本传递给 python?

Pandas Mapping:基于树形结构添加后缀

如何将一个模块导入另一个模块

将负数四舍五入到最接近零的 1,000

根据组内的条件过滤 Pandas Groupby 中的行

合并两个带有子标题的数据框

Pandas 将功能应用于具有滑动窗口的多列

Python根据字符串条件生成新列

具有单一分类特征的 LSTM 预测

在 django-rest-framework-simple-jwt 中使用三个字段进行身份验证

如何通过在 Python Pandas 中使用子字符串和匹配列值来创建新数据框

使用 argparse 处理子进程的参数:“预期一个参数”