网络宝典
第二套高阶模板 · 更大气的阅读体验

函数调用默认参数:让代码更简洁的小技巧(详细解析)

发布时间:2026-01-11 15:11:11 阅读:296 次

写程序的时候,经常要调用函数。有时候同一个函数在不同地方用,大部分参数都一样,只有个别不一样。每次都重复写一长串参数,不仅麻烦,还容易出错。这时候,函数调用默认参数就派上用场了。

什么是默认参数

默认参数就是在定义函数时,给某些参数预先设定一个“默认值”。如果调用函数时没有传这个参数,就会自动使用这个默认值。

比如你写个发消息的函数:

def send_message(text, mode="normal"):
    if mode == "urgent":
        print("【紧急】" + text)
    else:
        print("【普通】" + text)

这里 mode 的默认值是 "normal"。调用的时候如果不写,就按普通消息处理:

send_message("开会时间改到下午3点")
# 输出:【普通】开会时间改到下午3点

send_message("服务器宕机!", "urgent")
# 输出:【紧急】服务器宕机!

实际场景中的好处

想象你在做一个小工具,用来生成员工报告。大多数员工都是正式工,只有少数是实习生。你可以这样设计函数:

def generate_report(name, employee_type="正式员工"):
    print(f"{name} - {employee_type} - 本月绩效:良好")

平时调用只需要写名字:

generate_report("张伟")
# 输出:张伟 - 正式员工 - 本月绩效:良好

遇到实习生才特别说明:

generate_report("李娜", "实习生")

这样既省事,又不容易漏填。

注意事项

默认参数虽然方便,但也有坑。最常见的是用可变对象(比如列表或字典)当默认值:

def add_item(item, my_list=[]):
    my_list.append(item)
    return my_list

看起来没问题,但连续调用你会发现列表一直在累加:

print(add_item("A"))  # ['A']
print(add_item("B"))  # ['A', 'B']

这是因为默认参数只在函数定义时初始化一次。正确的做法是:

def add_item(item, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(item)
    return my_list

这样每次调用就不会互相干扰了。

学会用默认参数,能让代码更干净,也更容易维护。尤其在写一些常用功能函数时,合理设置默认值,能省下不少重复劳动。