在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
注意:默认参数的默认值在函数定义时确定,而不是每次调用时重新生成。如果默认参数是可变对象(如列表、字典),可能会出现“值被重复使用”的陷阱,但初学者暂时可以忽略(后续进阶再深入)。
混合使用三种参数的规则¶
- 位置参数在前,关键字参数在后:例如
func(1, b=2)合法,func(b=2, 1)不合法。 - 默认参数必须在末尾:不能定义
def func(a=1, b)(会报错),因为有默认参数在无默认参数前面。
场景总结¶
- 位置参数:用于“必须传递的关键信息”(如函数核心逻辑需要的参数)。
- 关键字参数:用于“参数多且需要明确含义”的场景(如调用长参数函数时避免记混顺序)。
- 默认参数:用于“大部分情况下用同一个值,偶尔需要修改”的可选参数(如设置函数的默认单位、默认值等)。
通过这三种参数的组合,你可以写出更简洁、更灵活的函数。多练习用不同参数调用函数,很快就能熟练掌握啦!