Python函数中的*args和**kwargs

        在python中,我们常常会看见*args和**kwargs这样的写法。其实这是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。这其实就是 Python 中可变参数的两种形式,并且 *args 必须放在 **kwargs 的前面,因为位置参数在关键字参数的前面。

一.*args的用法

*args 用于传递一个任意数量的位置参数(非关键字参数)。这些参数会被收集到一个 元组 中。

示例:

Python复制

def test_args(*args):
    print(args)  # args 是一个元组

# 调用函数
test_args(1, 2, 3, "a", "b")

输出:

(1, 2, 3, 'a', 'b')

使用场景:

  • 当你需要传递多个参数,但不确定具体有多少个时。

  • 当你需要将这些参数传递给其他函数时(例如,函数嵌套调用)。

二. **kwargs的用法

**kwargs 用于传递一个任意数量的关键字参数。这些参数会被收集到一个 字典 中。

示例:

def test_kwargs(**kwargs):
    print(kwargs)  # kwargs 是一个字典

# 调用函数
test_kwargs(name="Alice", age=25, city="New York")

输出:

{'name': 'Alice', 'age': 25, 'city': 'New York'}

使用场景:

  • 当你需要传递多个键值对参数时。

  • 当你需要让函数处理复杂的数据结构(如字典)时。

三.同时使用*args和**kwargs

同时使用 *args**kwargs*args 用于处理位置参数,而 **kwargs 用于处理关键字参数。

示例:

def test_args_kwargs(*args, **kwargs):
    print("Positional arguments:", args)
    print("Keyword arguments:", kwargs)

# 调用函数
test_args_kwargs(1, 2, 3, name="Alice", age=25)

输出:

Positional arguments: (1, 2, 3)
Keyword arguments: {'name': 'Alice', 'age': 25}

使用场景:

  • 当你需要同时处理位置参数和关键字参数时。

  • 当你需要设计一个通用的接口,允许用户传递任意数量的参数和关键字时。

四.传递外部参数

你也可以使用 *** 来解包已有的列表或字典,将其作为参数传递给函数。

示例:

def test_function(a, b, c):
    print(a, b, c)

# 使用 *args 解包列表
my_args = [1, 2, 3]
test_function(*my_args)  # 等价于 test_function(1, 2, 3)

# 使用 **kwargs 解包字典
my_kwargs = {"a": 4, "b": 5, "c": 6}
test_function(**my_kwargs)  # 等价于 test_function(a=4, b=5, c=6)

输出:

1 2 3
4 5 6

视频连接

快速学会python函数中的*args和**kwargs_哔哩哔哩_bilibili 

你可能感兴趣的:(python,开发语言)