一尘不染

Python-* args和** kwargs是什么意思?

python

究竟什么*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']

您如何有效地使用它们?


阅读 708

收藏
2020-02-15

共1个答案

一尘不染

*args/**kwargs作为函数定义的参数列表的最后一项放置,可使该函数接受任意数量的参数和/或关键字参数。

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

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

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

实际上,你不必将它们称为argskwargs,这只是一个约定。这是***该做的魔力。

2020-02-15