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

代码的时候,总会遇到一些函数需要传参,但有些参数其实大部分时间都用同一个值。每次都手动填写,不仅麻烦还容易出错。这时候,函数调用默认参数就派上用场了。

什么是默认参数?

简单来说,默认参数就是在定义函数时给参数设置一个“备用值”。如果调用函数时没有传这个参数,就会自动使用这个备用值。

比如你经常要打印用户信息,默认情况下希望显示“普通用户”身份:

def show_user(name, role="普通用户"):
    print(f"用户名:{name},身份:{role}")

show_user("小明")  
# 输出:用户名:小明,身份:普通用户

show_user("管理员老李", "管理员")
# 输出:用户名:管理员老李,身份:管理员

实际应用场景

装机过程中,我们常会写脚本自动配置系统环境。比如设置网络,大多数时候是 DHCP 自动获取,只有少数情况需要手动指定 IP。

def setup_network(ip="dhcp", gateway=None):
    if ip == "dhcp":
        print("启用DHCP自动获取IP")
    else:
        print(f"设置静态IP:{ip}")
        if gateway:
            print(f"网关设置为:{gateway}")

setup_network()  
# 启用DHCP自动获取IP

setup_network("192.168.1.100", "192.168.1.1")  
# 设置静态IP:192.168.1.100,网关设置为:192.168.1.1

这样一来,大多数机器装系统时直接运行 setup_network() 就行,不用每次填一堆参数,省事又不容易错。

注意事项

默认参数虽然方便,但别乱用可变对象,比如列表或字典。下面这种写法容易踩坑:

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

因为默认列表只创建一次,多次调用会共用同一个列表,导致数据累积。正确的做法是:

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

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

在写自动化脚本或配置工具时,合理使用默认参数,能让你的代码更简洁、更易用,装机效率也能提上去。