如何在 Python 中编写接受任意数量参数的函数

pythonserver side programmingprogramming更新于 2026/2/15 0:12:17

问题

您想要编写一个接受任意数量输入参数的函数。

解决方案

python 中的 * 参数可以接受任意数量的参数。我们将通过一个找出任意给定两个或多个数字的平均值的示例来理解这一点。在下面的示例中,rest_arg 是传递的所有额外参数(在我们的例子中是数字)的元组。该函数将参数视为一个序列,以执行平均值计算。

# 示例函数用于查找给定数字的平均值
def define_average(first_arg, *rest_arg):
average = (first_arg + sum(rest_arg)) / (1 + len(rest_arg))
print(f"*** 给定数字的平均值 {average}")

# 使用两个数字调用该函数
define_average(1, 2)

输出

*** 给定数字的平均值 1.5


# 使用更多数字调用该函数
define_average(1, 2, 3, 4)

输出

*** 给定数字的平均值 2.5

要接受任意数量的关键字参数,请使用以 ** 开头的参数。

def player_stats(player_name, player_country, **player_titles):
print(f"Output \n*** Type of player_titles - {type(player_titles)}")
titles = ' AND '.join('{} : {}'.format(key, value) for key, value in player_titles.items())

print(f"*** Type of titles post conversion - {type(titles)}")
stats = 'The player - {name} from {country} has {titles}'.format(name = player_name,
country=player_country,
titles=titles)
return stats

player_stats('Roger Federer','Switzerland', Grandslams = 20, ATP = 103)

输出

*** Type of player_titles - <class 'dict'>
*** Type of titles post conversion - <class 'str'>


'The player - Roger Federer from Switzerland has Grandslams : 20 AND ATP : 103'

在上面的例子中,player_titles 是一个保存传递的关键字参数的字典。

如果您想要一个可以接受任意数量的位置参数和关键字参数的函数,请同时使用 * 和 **

def func_anyargs(*args, **kwargs):
print(args) # 元组
print(kwargs) # 字典

使用此函数,所有位置参数都放入元组 args 中,所有关键字参数都放入字典 kwargs 中。


相关文章


有用资源