本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 函数参数与返回值的作用
函数的参数:外界希望在函数内部处理的数据
函数的返回值:向外界报告函数的执行结果
函数根据有没有参数以及有没有返回值,可以相互结合,一共4种组合形式。
- 无参数,无返回值
- 无参数,有返回值
- 有参数,无返回值
- 有参数,有返回值
定义函数时,是否接收参数,或者是否返回结果,是根据实际功能需求来决定的:
- 如果函数内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部
- 如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值
2. 函数多个返回值
函数的返回值可以有多个,通过使用元组可以让函数一次返回多个值,如果函数返回的类型是元组,return后的小括号可以省略,例如return temp, wetness
-
在使用或处理返回值时,可以通过元组直接调用返回值,例如
result[0] -
还可以使用多个变量,一次接收函数的返回结果,例如
gl_temp, gl_wetness = measure(),使用了两个变量分别接收了函数返回的结果。
注意:使用多个变量接收结果时,变量的个数应该和元组中元素的个数保持一致
# 函数多个返回值
def measure():
"""测量温度和湿度"""
print("测量开始...")
temp = 39
wetness = 90
print("测量结束...")
# 元组-可以包含多个数据,因此可以使用元组让函数一次返回多个值
# 如果函数返回的类型是元组,小括号可以省略
return temp, wetness
result = measure()
print("函数返回值:", result)
# 需要单独的处理温度或者湿度--不方便
print("测量温度为:", result[0])
print("测量湿度为:", result[1])
print("-"*50)
# 如果函数返回的类型是元组,同时希望单独的处理元组中的元素
# 可以使用多个变量,一次接收函数的返回结果
gl_temp, gl_wetness = measure()
print("测量温度为:", gl_temp)
print("测量湿度为:", gl_wetness)
print("-"*50)
程序运行结果如下图所示:代码中使用的两种方式都可以调用返回值。
3. 函数内部修改可变参数
无论传递的参数是可变还是不可变,只要针对的参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用。
如果传递的参数是可变类型,在函数内部,使用方法修改了数据内容,同样会影响到外部的数据。
# 函数内部通过方法修改可变参数
def demo(num_list):
print("函数内部的代码")
# 使用方法修改列表的内容
num_list.append(9)
print(num_list)
print("函数执行完成")
gl_list = [1, 2, 3]
demo(gl_list)
print(gl_list)
程序运行结果如下图所示: