Python函数通过args和kwargs实现不定长参数,args接收任意位置参数并存为元组,kwargs接收任意关键字参数并存为字典,二者结合可灵活处理参数数量和类型不确定的场景。

Python函数的不定长参数用来接收任意数量的参数,适合处理调用时参数个数不确定的情况。主要通过 *args 和 **kwargs 实现,它们能灵活收集位置参数和关键字参数。
使用 *args 接收任意位置参数
*args 可以捕获所有未被匹配的位置参数,存储为一个元组。
例如:- 定义函数时写成
def func(*args),调用时传入多个值,比如func(1, 2, 3) - 在函数内部,
args是一个元组,可以遍历或索引使用 - 如果还有固定参数,*args 必须放在最后
def show_numbers(*args):
for num in args:
print(num)
<p>show_numbers(10, 20, 30)</p><h1>输出:</h1><h1>10</h1><h1>20</h1><h1>30</h1><p>立即学习“Python免费学习笔记(深入)”;
使用 **kwargs 接收任意关键字参数
**kwargs 捕获所有未被匹配的关键字参数,保存为字典。
- 函数定义写成
def func(**kwargs),调用时使用键值对,如func(name="Alice", age=25) - 在函数内,
kwargs是字典,可用.items()遍历 - **kwargs 也要放在参数列表最后
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
<p>print_info(name="Bob", city="Beijing", job="Engineer")</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/ai/1715" title="Chromox"><img
src="https://img.php.cn/upload/ai_manual/000/000/000/175680315684832.png" alt="Chromox" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/ai/1715" title="Chromox">Chromox</a>
<p>Chromox是一款领先的AI在线生成平台,专为喜欢AI生成技术的爱好者制作的多种图像、视频生成方式的内容型工具平台。</p>
</div>
<a href="/ai/1715" title="Chromox" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div><h1>输出:</h1><h1>name: Bob</h1><h1>city: Beijing</h1><h1>job: Engineer</h1><p>立即学习“Python免费学习笔记(深入)”;
同时使用 *args 和 **kwargs
当需要同时处理位置参数和关键字参数时,可以把两者组合使用。
- 参数顺序必须是:普通参数 → *args → **kwargs
- 这样能覆盖最全的调用方式
def log_call(prefix, *args, **kwargs):
print(f"Log: {prefix}")
print("Positional args:", args)
print("Keyword args:", kwargs)
<p>log_call("Start", 1, 2, name="Tom", action="login")</p><h1>输出:</h1><h1>Log: Start</h1><h1>Positional args: (1, 2)</h1><h1>Keyword args: {'name': 'Tom', 'action': 'login'}</h1><p>立即学习“Python免费学习笔记(深入)”;
基本上就这些。掌握 *args 和 **kwargs 能写出更通用、可扩展的函数。










