究竟什么*args和**kwargs意味着什么?
*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)
当你覆盖某个函数并希望使用用户传入的任何参数调用原始函数时,它可能更常用于面向对象的编程中。
实际上,你不必将它们称为args和kwargs,这只是一个约定。这是*和**该做的魔力。
args
kwarg
*
**