1. 引言
Python 是一种高级面向对象的编程语言。 Python 中的函数可以接受不定长参数,这是 Python 最常见且最有用的特性之一。在 Python 中,不定长参数可以有两种类型,分别是:*args
和 **kwargs
。 这篇文章将详细介绍这两种类型的不定长参数。
2. *args
2.1 *args的概述
在 Python 中,*args
表示函数接受任意数量的位置参数,并以元组的形式传递给函数。这意味着,如果一个函数的参数列表中有 *args
,那么在函数调用时,您可以传递任意数量的参数。下面是一个简单的例子,可以更好地解释 *args:
def print_args(*args):
print(args)
print_args(1, 2, 3) # (1, 2, 3)
print_args('a', 'b', 'c', 'd') # ('a', 'b', 'c', 'd')
这里定义了一个函数print_args()
,并将 *args
作为其参数之一。 当我们传递一组参数,即使参数的数量不同,这个函数仍然可以正常工作。
2.2 带 *args 的函数例子
下面这个例子,使用 *args 来计算所有参数的总和:
def sum_of_numbers(*args):
sum = 0
for number in args:
sum += number
return sum
print(sum_of_numbers(1, 2, 3)) # 6
print(sum_of_numbers(10, 20, 30, 40)) # 100
在上面的代码中,我们定义了一个名为 sum_of_numbers()
的函数来计算所有参数的总和。在函数内部,我们使用了一个 for循环
来迭代 *args
元组中的所有数字并将它们相加。最后,我们返回这个总和。
3. **kwargs
3.1 **kwargs 的概述
在 Python 中, **kwargs
表示“关键字参数” ,意思是函数可以接受任意数量的关键字参数,并将它们作为字典传递给函数。这意味着,如果一个函数的参数列表中有 **kwargs
,那么在函数调用时,您可以传递任意数量的关键字参数。下面是一个简单的例子,可以更好地解释 **kwargs:
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}
这里定义了一个函数print_kwargs()
,并将 **kwargs
作为其参数之一。当我们传递一组关键字参数时,这个函数可以正常工作,并将它们作为字典打印出来。
3.2 带 **kwargs 的函数例子
下面这个例子,使用 **kwargs
来打印所有参数的名称和值:
def print_args_kwargs(*args, **kwargs):
print('Positional arguments:')
for arg in args:
print(arg)
print('Keyword arguments:')
for key, value in kwargs.items():
print(f"{key}: {value}")
print_args_kwargs('One', 'Two', 'Three', name='John', age=30, city='New York')
在上面的代码中,我们定义了一个名为 print_args_kwargs()
的函数,该函数接受不定长参数 *args
和 **kwargs
。在函数内部,我们使用两个 for循环
函数来打印所有的参数。第一个循环打印 *args
元组中的所有位置参数,第二个循环用来打印 **kwargs
字典中的所有关键字参数。
4. 总结
通过这篇文章,我们了解了 Python 中的两种不定长参数。 *args
可以接受任意数量的位置参数,并以元组的形式传递给函数。 **kwargs
可以接受任意数量的关键字参数,并以字典的形式传递给函数。使用这些不定长参数,可以使您的代码更加灵活和通用,从而提高代码的可读性和可维护性。