⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Python *args 和 **kwargs

深入理解可变参数 · 难度:进阶 · +15XP

Python *args 和 **kwargs

Python *args 和 **kwargs — 灵活的函数参数

学习前的准备

打开 Python 交互式解释器。你需要了解 Python 函数的基本定义和参数传递方式。*args 和 **kwargs 是 Python 中看似神秘实则非常实用的特性。

什么是 *args?

*args 中的星号 * 表示“把传入的所有多余的位置参数收集到一个元组中”。

def add_all(*args):
    print(f"收到了 {len(args)} 个参数:{args}")
    return sum(args)

print(add_all(1, 2, 3)) # 6 print(add_all(1, 2, 3, 4, 5)) # 15 print(add_all()) # 0

# 结合普通参数:普通参数在前,*args 在后 def greet(message, *names): for name in names: print(f"{message},{name}!") greet("你好", "张三", "李四", "王五")

什么是 **kwargs?

**kwargs 中的双星号 ** 表示“把传入的所有多余的关键字参数收集到一个字典中”。

def show_info(**kwargs):
    print(f"收到了 {len(kwargs)} 个关键字参数")
    for key, value in kwargs.items():
        print(f"  {key} = {value}")
show_info(name="张三", age=25, city="北京")

* 和 ** 的“拆包”用法

# * 拆包:把列表/元组拆成位置参数
def multiply(a, b, c):
    return a * b * c
nums = [2, 3, 4]
print(multiply(*nums))  # 24

# ** 拆包:把字典拆成关键字参数 def describe(name, age, city): print(f"{name},{age}岁,来自{city}") info = {"name": "张三", "age": 25, "city": "上海"} describe(**info)

小结

*args 收集多余的位置参数(元组),**kwargs 收集多余的关键字参数(字典)。定义函数时参数顺序是:普通参数、*args、默认参数、**kwargs。调用函数时,* 拆列表,** 拆字典。这两个特性让你的函数变得极其灵活。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 152 篇
0 完成
🔥 0