函数参数与返回值
函数的参数与返回值是函数最重要的两个部分,它们负责函数的输入和输出。通过参数,我们可以将数据传递给函数;通过返回值,函数可以将计算结果反馈回来。
1. 什么是函数的参数?
函数的参数就像函数的“入口”,通过它,外部可以向函数内部传递数据。
基本用法
定义函数时,可以在括号内指定参数,调用函数时,按需传入值。
def greet(name): # name 是参数
print(f"你好,{name}!")
greet("小明") # "小明" 是实际传入的值
输出:
你好,小明!
2. 参数的类型
Python 中的函数支持以下几种参数类型。
位置参数
参数按位置传递,调用时必须传入每一个参数。
def add(a, b): # a 和 b 是位置参数
return a + b
result = add(3, 5)
print(f"3 + 5 = {result}")
输出:
3 + 5 = 8
默认参数
在定义函数时可以为参数指定默认值。如果调用时没有传递该参数,就会使用默认值。
def greet(name="朋友"): # 设置默认参数
print(f"你好,{name}!")
greet() # 使用默认值
greet("小红") # 覆盖默认值
输出:
你好,朋友!
你好,小红!
关键字参数
调用函数时,可以通过指定参数名来传递值,而不是按顺序。这种方式叫关键字参数。
def introduce(name, age):
print(f"我是{name},今年{age}岁。")
introduce(age=25, name="小王") # 参数顺序可以不一致
输出:
我是小王,今年25岁。
可变参数
用 *args
和 **kwargs
定义可变参数:
*args
:接受任意数量的位置参数,函数内部会将它们作为一个元组处理。**kwargs
:接受任意数量的关键字参数,函数内部会将它们作为一个字典处理。
def show_args(*args, **kwargs):
print("位置参数:", args)
print("关键字参数:", kwargs)
show_args(1, 2, 3, name="小明", age=18)
输出:
位置参数: (1, 2, 3)
关键字参数: {'name': '小明', 'age': 18}
3. 什么是函数的返回值?
返回值是函数的“出口”,表示函数的输出。通过 return
语句,函数可以将计算结果返回给调用者。
单个返回值
def add(a, b):
return a + b
result = add(4, 6)
print(f"4 + 6 = {result}")
输出:
4 + 6 = 10
多个返回值
函数可以同时返回多个值,调用时可以用元组或多个变量接收。
def calculate(a, b):
return a + b, a - b
sum_result, diff_result = calculate(10, 4)
print(f"和:{sum_result}, 差:{diff_result}")
输出:
和:14, 差:6
4. 参数与返回值的结合
函数的参数与返回值常常结合使用,使函数更具灵活性。
示例:计算圆的面积和周长
import math
def circle_properties(radius):
if radius < 0:
return "半径不能为负数!"
area = math.pi * radius ** 2
circumference = 2 * math.pi * radius
return area, circumference
# 用户输入半径
radius = float(input("请输入圆的半径:"))
result = circle_properties(radius)
# 判断返回结果并输出
if isinstance(result, str):
print(result) # 错误信息
else:
area, circumference = result
print(f"圆的面积:{area:.2f}, 周长:{circumference:.2f}")
5. 常见问题与注意事项
参数顺序:位置参数必须在默认参数之前,关键字参数必须在可变参数之后。
def example(a, b=10, *args, **kwargs): pass
返回值:函数如果没有
return
,默认返回None
。可以通过return None
明确表示没有返回值。可变对象作为默认值:避免使用可变对象(如列表或字典)作为默认参数,容易引发意想不到的问题。
def append_value(val, lst=[]): lst.append(val) return lst print(append_value(1)) # [1] print(append_value(2)) # [1, 2],共享同一个默认列表!
解决方法:将默认值设为
None
,在函数内部初始化。def append_value(val, lst=None): if lst is None: lst = [] lst.append(val) return lst
6. 总结
- 参数:用于向函数传递输入,有位置参数、默认参数、关键字参数和可变参数等类型。
- 返回值:用于将函数结果反馈给调用方,支持返回单个值和多个值。
掌握函数的参数与返回值,可以让你的代码更加灵活、清晰、高效!