pin_drop当前位置:知识文库 ❯ 图文

Python默认参数

概述

默认参数允许在函数定义时为参数指定默认值。调用函数时,如果未传递该参数,则使用默认值。默认参数使函数调用更加灵活。

语法

代码示例

def func(arg1, arg2=default):
    pass

基本用法

代码示例

def greet(name, greeting="Hello"):
    return f"{greeting}, {name}!"

print(greet("Alice"))
print(greet("Bob", "Hi"))

多个默认参数

代码示例

def create_user(name, role="user", active=True):
    return {"name": name, "role": role, "active": active}

print(create_user("Alice"))
print(create_user("Bob", "admin", False))

可变默认值陷阱

代码示例

def append_item(item, lst=[]):
    lst.append(item)
    return lst

print(append_item(1))
print(append_item(2))

def append_item_fixed(item, lst=None):
    if lst is None:
        lst = []
    lst.append(item)
    return lst

print(append_item_fixed(1))
print(append_item_fixed(2))

注意事项

提示:可变默认值会导致共享问题,应使用None替代。默认参数必须放在位置参数之后。

小结

  • 默认参数在定义时指定默认值

  • 调用时可省略有默认值的参数

  • 可变默认值会导致共享问题,应使用None替代

  • 默认参数必须放在位置参数之后

练习题

练习1

编写函数connect(host, port=3306)模拟数据库连接

练习2

编写函数format_name(first, last, reverse=False)格式化姓名

常见问题

为什么可变默认值会导致共享问题?

因为默认值在函数定义时只创建一次,所有函数调用共享同一个对象。如果默认值是列表或字典等可变类型,修改它会影响后续调用。

如何正确使用可变类型作为默认值?

应该使用None作为默认值,然后在函数体内检查并创建新对象。例如:def func(lst=None): if lst is None: lst = []

默认参数可以放在位置参数前面吗?

不可以。Python语法规定默认参数必须放在位置参数之后,否则会抛出SyntaxError异常。

标签: Python 默认参数 函数参数 默认值 函数定义

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python位置参数 下一篇: Python关键字参数

poll相关推荐