函数参数:位置参数、关键字参数和默认参数入门

在Python中,函数就像一个可以接收不同“指令”的工具,而函数参数就是我们传递给工具的“信息”。合理使用不同类型的参数,能让函数更灵活、更易用。今天我们就来学习最基础也最常用的三种参数:位置参数、关键字参数和默认参数。

1. 位置参数(Positional Arguments)

位置参数是最基础的参数类型,必须按照函数定义时的顺序传递。想象你对朋友说“把10元钱和5元钱给我”,这里“10元”和“5元”的顺序不能颠倒,否则意思就变了。

定义函数时,参数按顺序排列:

def add(a, b):  # a和b是位置参数
    return a + b

调用时,必须按顺序传递对应的值:

result = add(3, 5)  # a=3,b=5,返回8
print(result)  # 输出:8

注意:位置参数必须“不多不少”,少传或多传都会报错。比如add(1)会提示“缺少b参数”,add(1, 2, 3)会提示“多余参数”。

2. 关键字参数(Keyword Arguments)

关键字参数通过参数名=值的形式传递,顺序可以颠倒,更直观地表明参数含义。比如你对朋友说“请把价格是5元的东西和10元的东西给我”,用“价格=5元”和“价格=10元”明确表达,避免顺序混淆。

调用函数时,用参数名=值传递:

def greet(name, message="你好"):  # name是位置参数,message是默认参数(后续讲)
    print(f"{message}{name}!")

# 用关键字参数调用,顺序可以颠倒
greet(name="小明", message="Hello")  # 输出:Hello,小明!
greet(message="Hi", name="小红")    # 输出:Hi,小红!

混合使用位置和关键字参数时,必须位置参数在前,关键字参数在后

greet("小刚", message="早安")  # 正确:位置参数在前,关键字参数在后
greet(message="早安", "小刚")  # 错误!会报错“SyntaxError”

3. 默认参数(Default Arguments)

默认参数给参数一个“备用值”,调用时如果没传这个参数,就自动使用默认值。比如“计算圆面积”时,默认半径是3,这样不需要每次都传半径。

定义方式:在参数名后用=赋值默认值,且默认参数必须放在位置参数列表的末尾(否则会报错):

def circle_area(radius=3):  # radius默认值为3(必须在末尾)
    return 3.14 * radius ** 2

# 调用时可以不传radius,用默认值
area1 = circle_area()  # 3.14 * 3² = 28.26
# 也可以传新值覆盖默认值
area2 = circle_area(5)  # 3.14 * 5² = 78.5

注意:默认参数的默认值在函数定义时确定,而不是每次调用时重新生成。如果默认参数是可变对象(如列表、字典),可能会出现“值被重复使用”的陷阱,但初学者暂时可以忽略(后续进阶再深入)。

混合使用三种参数的规则

  1. 位置参数在前,关键字参数在后:例如func(1, b=2)合法,func(b=2, 1)不合法。
  2. 默认参数必须在末尾:不能定义def func(a=1, b)(会报错),因为有默认参数在无默认参数前面。

场景总结

  • 位置参数:用于“必须传递的关键信息”(如函数核心逻辑需要的参数)。
  • 关键字参数:用于“参数多且需要明确含义”的场景(如调用长参数函数时避免记混顺序)。
  • 默认参数:用于“大部分情况下用同一个值,偶尔需要修改”的可选参数(如设置函数的默认单位、默认值等)。

通过这三种参数的组合,你可以写出更简洁、更灵活的函数。多练习用不同参数调用函数,很快就能熟练掌握啦!

小夜