默认参数在定义时计算一次,避免使用可变对象作为默认值,应使用None并在函数内初始化;2. args收集位置参数为元组,kwargs收集关键字参数为字典;3. 参数顺序必须为普通参数、默认参数、args、kwargs,组合使用可提升函数灵活性。

在 Python 中,函数的可变参数和默认值是两个非常实用的功能,能让你写出更灵活、通用的代码。下面直接说明它们的用法和注意事项。
给函数参数设置默认值,可以在调用时省略该参数,使用预设的值。
定义方式是在参数名后用 = 赋值。
例如:def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
<p>greet("Alice") # 输出:Hello, Alice!
greet("Bob", "Hi") # 输出:Hi, Bob!
注意:默认值只在函数定义时计算一次,因此不要用可变对象(如列表、字典)作为默认值。
错误示例:
def bad_append(item, lst=[]): # 不推荐
lst.append(item)
return lst
正确做法是使用 None 作为默认值,并在函数内部初始化:
def good_append(item, lst=None):
if lst is None:
lst = []
lst.append(item)
return lst
当不确定传入多少个参数时,可以使用可变参数。Python 提供两种形式:*args 和 **kwargs。
*args 收集多余的 positional 参数,变成一个元组。
例如:def sum_all(*args):
return sum(args)
<p>print(sum_all(1, 2, 3)) # 输出:6
print(sum_all(10, 20)) # 输出:30
**kwargs 收集多余的 keyword 参数,变成一个字典。
例如:def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
<p>print_info(name="Alice", age=25, city="Beijing")</p><h1>输出:</h1><h1>name: Alice</h1><h1>age: 25</h1><h1>city: Beijing</h1><p>你可以同时使用默认参数、*args 和 **kwargs,但要注意参数顺序:
必须按以下顺序定义:
def example(a, b=10, *args, **kwargs):
print("a:", a)
print("b:", b)
print("args:", args)
print("kwargs:", kwargs)
<p>example(1, 2, 3, 4, x=5, y=6)</p><h1>输出:</h1><h1>a: 1</h1><h1>b: 2</h1><h1>args: (3, 4)</h1><h1>kwargs: {'x': 5, 'y': 6}</h1><p>基本上就这些。掌握默认值和可变参数,能让函数接口更友好、适应更多场景。关键是理解每种参数的作用和书写顺序。不复杂但容易忽略细节。
以上就是函数可变参数与默认值如何使用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号