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创作,请仔细甄别