*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
,这只是一个约定。 *
和 **
发挥了作用。
官方 Python 文档有 a more in-depth look .
关于python - *args 和 **kwargs 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287085/