python的参数有哪些?怎么用?

Python函数参数包括位置参数、默认参数、关键字参数、args和kwargs,按顺序使用可提升函数灵活性。位置参数需按顺序传值;默认参数提供默认值且必须位于位置参数后;关键字参数通过“参数名=值”传参,提高可读性且须位于位置参数之后;args收集多余位置参数为元组;kwargs收集未定义的关键字参数为字典。组合顺序为:普通参数 → args → 默认参数 → *kwargs,遵循此规则可设计出更通用的函数。

Python 函数的参数有多种类型,每种都有不同的用途和使用方式。掌握这些参数能让你写出更灵活、可复用的函数。

位置参数(Positional Arguments)

这是最基础的参数类型,按传入顺序一一对应。

说明:定义函数时参数从左到右排列,调用时也必须按相同顺序传值。
  • 如果传少了会报错“missing”
  • 传多了会报错“too many”

例子:

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

greet("小明", 20) # 正确 greet(20, "小明") # 逻辑错误,但语法合法

默认参数(Default Arguments)

在定义函数时给参数设置默认值,调用时可不传。

说明:带有默认值的参数必须放在位置参数后面。
  • 调用时若不传该参数,使用默认值
  • 传了就覆盖默认值

例子:

def greet(name, msg="欢迎"):
    print(f"{msg}, {name}!")

greet("小红") # 输出:欢迎, 小红! greet("小红", "早上好") # 输出:早上好, 小红!

关键字参数(Keyword Arguments)

调用函数时通过“参数名=值”的方式传参,可以不按顺序。

说明:提高代码可读性,尤其参数多的时候。
  • 关键字参数可以和位置参数混用
  • 但关键字参数必须写在位置参数之后

例子:

def create_user(name, age, city):
    print(f"{name}, {age}岁, 居住地: {city}")

create_user(age=25, name="李四", city="北京") # 不按定义顺序也可以 create_user("王五", city="上海", age=30) # 混用也行

*args(可变位置参数)

接收任意多个位置参数,打包成一个元组。

说明:*args 能收集多余的非关键字参数。
  • 名字 args 可以换成别的,但习惯用 *args
  • * 是关键符号

例子:

def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total

print(sum_all(1, 2, 3)) # 输出:6 print(sum_all(1, 2, 3, 4, 5)) # 输出:15

**kwargs(可变关键字参数)

接收任意多个关键字参数,打包成字典。

说明:用来处理不确定数量的命名参数。
  • **kwargs 收集所有未在函数定义中出现的关键字参数
  • kwargs 是字典类型

例子:

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

print_info(name="张三", age=28, job="程序员")

输出:

name: 张三

age: 28

job: 程序员

参数组合使用的顺序

当多种参数共存时,必须遵守固定顺序:

格式:普通位置参数 → *args → 默认参数 → **kwargs

正确例子:

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

example(1, 2, 3, 4, c=99, x=100, y=200)

基本上就这些。理解每种参数的作用和使用场景,能让函数设计更合理。