数码知识屋
霓虹主题四 · 更硬核的阅读氛围

函数参数怎么定义?一文搞懂常用写法

发布时间:2025-12-22 06:51:00 阅读:129 次

写代码时,函数是绕不开的部分,而函数参数怎么定义,直接影响到代码的灵活性和可读性。很多人刚上手时总觉得参数不过就是括号里写几个变量名,其实里面的门道不少。

基本参数:最常见也最实用

定义函数时,在括号里写上变量名,就是最基础的参数。比如你写一个计算总价的函数,商品单价和数量自然要传进去:

def calculate_price(unit_price, quantity):
    return unit_price * quantity

这里的 unit_pricequantity 就是位置参数,调用时按顺序传值就行:

calculate_price(15, 4)  # 单价15,买4个

默认参数:让常用值不用每次都写

有些参数经常用同一个值,每次都输就麻烦。比如给商品打9折是常态,可以把折扣设成默认参数:

def calculate_price(unit_price, quantity, discount=0.9):
    return unit_price * quantity * discount

这样调用时如果不传 discount,就自动按9折算。想自定义也行:

calculate_price(20, 5)      # 默认9折
calculate_price(20, 5, 0.8) # 手动传8折

关键字参数:调用更清晰,不怕顺序错

当参数一多,光靠位置容易搞混。比如一个生成用户报告的函数:

def generate_report(name, age, city, show_chart=True):
    # 生成逻辑
    pass

调用时用关键字明确指定,代码一眼看懂:

generate_report(name="小明", age=26, city="杭州", show_chart=False)

即使换顺序也没问题,可读性高多了。

可变参数:应对不确定数量的输入

有时候你不知道会传几个值进来。比如统计多个商品的总价,可以用 *args 接收任意多个位置参数:

def total_prices(*prices):
    return sum(prices)

total_prices(10, 20, 30, 40)  # 返回100

如果想传键值对形式的多个参数,就用 **kwargs

def user_info(**info):
    for key, value in info.items():
        print(f"{key}: {value}")

user_info(name="小王", level=5, active=True)

混合使用:灵活搭配才够用

实际开发中,参数往往是组合使用的。记住顺序就行:必选参数 → 默认参数 → *args → **kwargs。

def order_summary(category, *items, tax=0.1, **details):
    print(f"类别:{category}")
    print(f"商品数:{len(items)}")
    print(f"税费:{tax}")
    for k, v in details.items():
        print(f"{k}: {v}")

这个函数既能处理多种输入,又保持了扩展性。

函数参数怎么定义,说到底是为了让函数更好用、更稳定。别小看这几个参数写法,用好了能让代码少出错,别人也更容易接手。”}