数智应用帮
柔彩主题三 · 更轻盈的阅读体验

函数调用默认参数:让代码更简洁实用的小技巧

发布时间:2026-01-11 15:10:30 阅读:41 次

代码的时候,总会遇到一些函数需要频繁调用,但每次传的参数差不多。比如你写个发消息的函数,大部分通知都是“紧急”级别,只有少数是“普通”。如果每次都得手动填一遍,默认值不是浪费时间吗?

默认参数是怎么回事

函数定义时,给参数指定一个默认值,调用时不传这个参数,就自动用上默认值。这招在 Python、JavaScript 这类语言里特别常见,用起来也顺手。

def send_notification(message, level="紧急"):
    print(f"【{level}】{message}")

send_notification("系统即将重启")  
# 输出:【紧急】系统即将重启

send_notification("例行检查完成", "普通")  
# 输出:【普通】例行检查完成

你看,第一条通知没传 level,默认就是“紧急”,省事又清晰。

实际场景中的好处

在开发后台服务时,经常要查数据库。查询函数通常带分页参数,比如 page 和 size。大多数时候用的是第一页、每页10条,如果每次都要写 page=1, size=10,代码看着就啰嗦。

def fetch_users(page=1, size=10, status=None):
    # 模拟查询逻辑
    print(f"查询第 {page} 页,每页 {size} 条,状态={status}")

fetch_users()                    
# 查询第 1 页,每页 10 条,状态=None

fetch_users(status="active")     
# 查询第 1 页,每页 10 条,状态=active

这样调用清爽多了,关键参数一目了然,不重要的靠默认值兜底。

注意几个坑

默认参数虽然方便,但也有容易踩的地方。最典型的是把可变对象(比如列表、字典)当默认值。

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

看起来没问题,但连续调用你会发现,items 像是有记忆一样,上次加的东西还在。因为默认参数只初始化一次,后续所有调用共用同一个列表。

正确的写法是:

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

这样每次调用都能拿到干净的新列表。

不同语言的小差异

JavaScript 的默认参数写法和 Python 类似:

function greet(name = "游客") {
    console.log(`你好,${name}!`);
}

而像 C++ 则是在声明函数时指定默认值,且只能从右往左依次设置,不能跳着来。

不管哪种语言,核心思路都一样:减少重复输入,提升代码可读性。只要别乱用可变默认值,这功能用起来又安全又高效。