首页 >后端开发 >Python教程 >理解 Python 中的 *args 和 **kwargs

理解 Python 中的 *args 和 **kwargs

Susan Sarandon
Susan Sarandon原创
2025-01-16 22:16:13545浏览

Understanding *args and **kwargs in Python

Python 中 *args 和 **kwargs 的妙用:灵活函数的秘诀

在 Python 中,*args**kwargs 是创建灵活函数的强大工具,它们允许函数接收可变数量的参数。当您事先不知道将传递给函数多少个参数时,这尤其有用。


什么是 *args

*args 允许函数接受任意数量的位置参数。这些参数存储在一个元组中。

示例:

<code class="language-python">def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3, 4, 5)</code>

输出:

<code>1
2
3
4
5</code>

在这里,您可以传递任意数量的数字,它们都将被打印。如果未传递任何参数,args 将只是一个空元组。


什么是 **kwargs

**kwargs 允许函数接受任意数量的关键字参数。这些参数存储在一个字典中,键是参数名称,值是它们对应的值。

示例:

<code class="language-python">def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="New York")</code>

输出:

<code>name: Alice
age: 25
city: New York</code>

在这里,您可以传递任意数量的键值对。如果未传递任何关键字参数,kwargs 将只是一个空字典。


组合使用 *args**kwargs

您可以在同一个函数中同时使用 *args**kwargs。这允许您同时处理位置参数和关键字参数。

示例:

<code class="language-python">def describe_person(*args, **kwargs):
    print("Attributes:")
    for arg in args:
        print(f"- {arg}")

    print("\nDetails:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

describe_person("Friendly", "Helpful", name="Bob", age=30, city="Boston")</code>

输出:

<code>Attributes:
- Friendly
- Helpful

Details:
name: Bob
age: 30
city: Boston</code>

在这里,*args 收集位置参数(如 "Friendly" 和 "Helpful"),**kwargs 收集关键字参数(如 name="Bob" 和 age=30)。


简单的记忆规则

  1. 当您需要传递可变数量的位置参数时,使用 *args
  2. 当您需要传递可变数量的关键字参数时,使用 **kwargs
  3. 函数签名中的顺序应始终为:
    • 常规位置参数
    • *args
    • 默认关键字参数
    • **kwargs

初学者实用示例

示例 1:一个用于添加数字的函数

<code class="language-python">def add_numbers(*args):
    total = sum(args)
    print(f"The sum is: {total}")

add_numbers(1, 2, 3, 4)
add_numbers(10, 20)</code>

输出:

<code>The sum is: 10
The sum is: 30</code>

示例 2:按姓名问候人们

<code class="language-python">def greet_people(**kwargs):
    for name, greeting in kwargs.items():
        print(f"{greeting}, {name}!")

greet_people(Alice="Hello", Bob="Hi", Charlie="Hey")</code>

输出:

<code>Hello, Alice!
Hi, Bob!
Hey, Charlie!</code>

示例 3:在购物清单中组合使用 *args**kwargs

<code class="language-python">def shopping_list(*items, **prices):
    print("Items to buy:")
    for item in items:
        print(f"- {item}")

    print("\nPrices:")
    for item, price in prices.items():
        print(f"{item}: ${price}")

shopping_list("Apples", "Bananas", Apples=2, Bananas=1.5, Oranges=3)</code>

输出:

<code>Items to buy:
- Apples
- Bananas

Prices:
Apples: 
Bananas: .5
Oranges: </code>

结论

通过使用 *args**kwargs,您可以使您的 Python 函数更加动态和灵活。这在处理输入数量可能变化的程序时尤其有用。从小型项目开始尝试这些功能,您会发现它们非常方便!

以上是理解 Python 中的 *args 和 **kwargs的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn