【记录】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)

运行结果:

扫描二维码关注公众号,回复: 14807855 查看本文章

可以看到,c和b在结尾被赋值,但其实不影响变量,而是都作为c被打印出来。
而除了第一个参数,其他没有xxx=xxx形式的都被识别为b打印了出来。

猜你喜欢

转载自blog.csdn.net/qq_46106285/article/details/127661974
今日推荐