Python函数参数怎么用?一看就懂

Python代码时,函数是经常要用的工具。而函数的参数,就像是你点外卖时填写的备注——要不要加辣、米饭来两份、不要葱花……这些信息告诉函数“该怎么做”。理解参数的用法,能让代码更灵活,也更容易复用。

位置参数:顺序不能乱

最常见的就是位置参数。调用函数时,传进去的值按顺序对应到函数定义里的参数名。

def greet(name, age):
    print(f"你好,{name},你今年{age}岁吧?")

greet("小明", 25)

这里,"小明"对应name,25对应age。如果写反了,结果就乱套了,变成“你好,25,你今年小明岁吧?”显然不对。

关键字参数:指名道姓更安全

为了避免顺序出错,可以直接用参数名传值。

greet(age=25, name="小红")

这样不管顺序如何,都能正确匹配。特别适合参数多的时候,一眼就知道每个值代表什么。

默认参数:给个保底值

有些参数不每次都变,比如你每次打招呼都默认用“您好”,除非特别说明。

def say_hi(name, greeting="您好"):
    print(f"{greeting},{name}!")

say_hi("老王")          # 输出:您好,老王!
say_hi("老李", "嘿")     # 输出:嘿,老李!

当没传第二个参数时,自动用默认值。注意:默认参数要放在最后,不然Python会搞不清哪个是哪个。

可变参数:来者不拒

有时候你不知道会传几个值进来,比如统计全班同学的平均分,人数不固定。这时候用*args。

def average(*scores):
    if len(scores) == 0:
        return 0
    return sum(scores) / len(scores)

print(average(85, 90, 78))     # 输出:84.33...

*scores会把所有传入的值打包成一个元组。名字不一定要叫args,但习惯这么写。

关键字可变参数:接收任意命名参数

除了数值,有时还想传一堆自定义配置,比如用户信息:city='北京', job='程序员'。这时用**kwargs。

def profile(name, **info):
    print(f"用户:{name}")
    for key, value in info.items():
        print(f"{key}: {value}")

profile("阿杰", city="深圳", age=28)

**info会把所有关键字参数收集成字典,方便遍历处理。

混合使用要注意顺序

实际写函数时,这几种参数可以一起用,但得按规矩排队:位置参数 → 默认参数 → *args → **kwargs。

def func(a, b, c=10, *args, **kwargs):
    print(a, b, c, args, kwargs)

只要记住这个顺序,就不会报错。

函数参数其实没那么复杂,就像点餐时的选项,有的必选,有的可选,有的随便加。用好了,代码读起来像句子一样自然。