【记录】Python3|将元组/列表/集合或字典解析成多个参数传入函数,以及定义可变参数函数
【说人话版】
将元组/列表/集合或字典直接作为多个函数参数传入,只需要添加*
或**
即可。
样例如下。
在Python中,将元组、列表、集合或字典作为多个函数参数传入是一种非常方便的技巧,可以帮助我们在编写代码时更加简洁高效。使用*
或**
语法可以让Python将这些数据结构解析为多个参数,以便我们在函数调用时更方便地使用它们。
这种技巧在很多场景中都非常有用。例如,我们可以使用它来将一个列表中的所有元素传递给一个函数,或者将一个字典中的所有键-值对作为参数传递给一个函数。下面是一些例子:
元组/列表/集合
添加*
。如:
# 使用 * 将元组/列表/集合解析成多个参数传入函数
def my_func(a, b, c):
print(f"a = {a}, b = {b}, c = {c}")
my_tuple = (1, 2, 3)
my_func(*my_tuple) # 输出:a = 1, b = 2, c = 3
# 使用 * 将列表解析成多个参数传入函数
my_list = [4, 5, 6]
my_func(*my_list) # 输出:a = 4, b = 5, c = 6
# 使用 * 将集合解析成多个参数传入函数
my_set = {7, 8, 9}
my_func(*my_set) # 输出:a = 7, b = 8, c = 9
运行结果:
【说人话版】
如上代码所示,这个函数需要3个参数,但我只传入了一个元组/列表/集合变量,不需要写成my_func(my_turple[0], my_turple[1], my_turple[2])
。方便。
上面的代码演示了如何使用将不同的数据结构解析成多个参数传递给函数。这种方法非常方便,可以让我们在不改变函数参数列表的情况下,将多个参数传递给函数。
需要注意的是,使用时,传入的参数必须是可迭代对象,如元组、列表、集合等。另外,需要保证传入的参数个数与函数参数个数相同,否则会出现TypeError错误。在这种情况下,可以使用可变参数函数来接收任意数量的参数。
字典
添加**
,可以做到一一映射。
def test_func(a, b, c):
print(a)
print(b)
print(c)
test_dict={
'a':123,
'b':456,
'c':789
}
test_func(**test_dict)
运行结果:
另,如果添加*
,就只解析字典的键值。运行结果:
可变参数
一样的,*
表示元组,**
表示字典。
定义可变参数的函数的时候,**
字典参数得放在*
元组参数后面,且放在参数列表最后。
如:
def test_func(a, *b, **c):
print(a)
print(b)
print(c)
test_dict={
'a':123,
'b':456,
'c':789
}
test_func(12, 34, 56, 78, c=1, b=2)
运行结果:
可以看到,c和b在结尾被赋值,但其实不影响变量,而是都作为c被打印出来。
而除了第一个参数,其他没有xxx=xxx
形式的都被识别为b打印了出来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix