当前位置:   article > 正文

重要: *args, **kwargs的打包和解包用法_**kwargs 解包

**kwargs 解包

总结:

当**input当成实参时,表示解包成字典。同理,*input表示解包成元组或列表当是实参时。当**input当成形参定义函数时,表示接收任意个参数打包成字典。同理,*input表示打包成元组或列表

一、*args, **kwargs的打包

1.利用**打包的例子

当我们使用 ** 来打包关键字参数时,我们可以将这些关键字参数打包成一个字典。这样做可以使代码更加灵活,适用于需要动态设置参数的情况。下面是一个简单的例子:

  1. def create_student_record(name, age, **kwargs):
  2.     record = {
  3.         "name": name,
  4.         "age": age
  5.     }
  6.     for key, value in kwargs.items():
  7.         record[key] = value
  8.     return record
  9. # 创建一个学生记录
  10. student1 = create_student_record("Alice", 20, major="Computer Science", GPA=3.5)

print(student1)
代码解析:在这个例子中,我们定义了一个名为 create_student_record 的函数,它接受两个必选的参数 nameage,以及任意数量的其他关键字参数。通过使用 **kwargs,我们可以动态地接受任意数量的关键字参数,并将它们打包成一个字典 kwargs。调用 create_student_record 函数时,我们传递了三个参数:name="Alice", age=20 以及 major="Computer Science", GPA=3.5 这两个额外的关键字参数。这些额外的关键字参数会被打包成一个字典,并传递给函数。

当我们运行这段代码时,会输出:

{'name': 'Alice', 'age': 20, 'major': 'Computer Science', 'GPA': 3.5}
2.利用*打包的例子

当使用*来打包参数时,它将会把多个参数收集成一个元组。

  1. def print_arguments(*args):
  2. for arg in args:
  3. print(arg)
  4. # 使用*来打包参数
  5. print_arguments("Hello", "World", 2023, True)

在这个例子中,print_arguments函数使用*args来接收任意数量的参数,并将它们打包成一个元组。当函数被调用时,传入的参数被打包成一个元组,然后通过循环逐个打印出来。

当你运行上面的代码时,它会输出:

Hello
World
2023
True

二、*args, **kwargs的解包

1.利用**kwargs解包的例子

当我们使用 ** 来解包字典时,我们可以将字典中的键值对作为关键字参数传递给函数或方法。这样做可以使代码更加简洁清晰。下面是一个简单的例子:

  1. def greet(name, age):
  2. print(f"Hello, {name}! I heard you are {age} years old.")
  3. # 定义一个字典
  4. person = {"name": "Alice", "age": 25}
  5. # 使用 ** 解包字典,将键值对作为关键字参数传递给函数
  6. greet(**person)

通过使用 **person,我们将字典 person 中的键值对解包,并作为关键字参数传递给 greet 函数。这样,greet 函数就可以像这样调用:greet(name="Alice", age=25)

当我们运行这段代码时,会输出:

Hello, Alice! I heard you are 25 years old.

三、利用*和**同时打包的例子。(其实就是一个元组和一个字典解包完再打包

当我们同时使用 *** 来处理参数时,我们可以将位置参数和关键字参数同时打包传递给函数。下面是一个简单的例子:

  1. def print_info(*args, **kwargs):
  2. print("Positional arguments:")
  3. for arg in args:
  4. print(arg)
  5. print("\nKeyword arguments:")
  6. for key, value in kwargs.items():
  7. print(f"{key}: {value}")
  8. # 创建一些参数
  9. names = ["Alice", "Bob", "Charlie"]
  10. info = {"age": 25, "country": "USA"}
  11. # 使用 * 和 ** 打包参数并传递给函数
  12. print_info(*names, **info)

在这个例子中,我们定义了一个名为 print_info 的函数,它接受任意数量的位置参数 args 和任意数量的关键字参数 kwargs

我们准备了一个列表 names 和一个字典 info 作为参数。通过使用 *names,我们将列表中的元素作为位置参数传递给函数;通过使用 **info,我们将字典中的键值对作为关键字参数传递给函数。

当函数内部执行时,会按照位置参数和关键字参数的方式分别处理参数,并输出它们的值。

当我们运行这段代码时,会输出:

  1. Positional arguments:
  2. Alice
  3. Bob
  4. Charlie
  5. Keyword arguments:
  6. age: 25
  7. country: USA

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/442733
推荐阅读
  

闽ICP备14008679号