1. 函数参数和返回值的作用
函数根据有没有参数以及有没有返回值,可以相互组合,共有4种形式:
- 无参数,无返回值
- 无参数,有返回值
- 有参数,无返回值
- 有参数,有返回值
定义函数时,是否接收参数,或者是否返回结果,是根据实际的功能需求决定的。
- 如果函数内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部。
- 如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值。
2. 函数的返回值进阶
问题:一个函数执行后能否返回多个结果?
- 元组-可以包含多个数据,因此可以使用元组让函数一次返回多个值;
- 如果函数返回的类型是元组,小括号可以省略;
- 如果函数返回的类型是元组,同时希望单独处理元组种的元素,可以使用多个变量,一次接收函数的返回结果;
注意,使用多个变量接收结果时,变量的个数应和元组中元素的个数保持一致。
举个栗子
# 测量温度和湿度
def measure():
print("测量开始")
temp = 39
wet = 56
print("测量结束")
return temp,wet # 返回的数据类型为元组,可省略'()'
gl_temp, gl_wet = measure() # 定义两个变量接收返回的结果
print(gl_temp)
output:
测量开始
测量结束
39
56
举个栗子-交换数字(经典面试题)
在不使用其他变量的情况下,交换a和b的值。
a = 6
b = 100
a,b = b,a # python专有,利用元组。等号右边是一个元组,只是把小括号省略了
print(a)
print(b)
output:
100
6
3. 函数的参数进阶
3.1 不可变和可变的参数
问题1:在函数内部,针对参数使用赋值语句,会不会影响调用函数时传递的实参变量?——不会!
- 无论传递的参数是可变还是不可变,只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用。
举个栗子
def demo(num,num_list):
print("函数内部的代码")
# 在函数内部,针对参数使用赋值语句
num = 100 # 不可变的参数
num_list = [1,2,3]