Day10-函数进阶
01-返回值
-
什么是返回值
返回值就是函数内部传递到函数外部的数据(默认情况下函数内部产生的数据,函数外部不能使用)
-
怎么确定函数的返回值
python函数的返回值是跟在return后面,若没有则默认为None
return的作用:遇到return会确定函数返回值并且直接结束函数
-
怎么在函数外部获取函数返回值
函数调用表达式的值就是函数的返回值,所以在函数外部获取函数调用表达式的值就是函数返回值
# 1) def func1(a, b): print(a + b) print(f'return:{func1(10, 20)}') # 2) def func2(a, b): return a + b # print(f'return: {func2(10, 20)}') # 3)有多个返回值的函数(实际返回一个元组) def fun3(a, b): return a + b, a * b print(f'return:{fun3(10, 20)}') # return:(30, 200) # 练习:可以求多个数的和以及平均值 def sum_mean(*args): if not args: return None, None return sum(args), sum(args) / len(args) sum1, mean1 = sum_mean(10, 20, 30, 40, 50, 60) print(f'和是{sum1}平均数是{mean1}')
02-全局变量和局部变量
-
什么是全局变量和局部变量
按照变量的作用域不同将变量分为全局和局部两种
-
全局变量
定义在函数和类外面的变量
作用域:从定义开始到文件结束的任意位置都可以使用
a = 100 for x in range(3): print(f'循环内部:{a}') def func1(): print(f'函数内部:{a}') # b是全局 for b in range(3): # c = 'hello' pass print(f'{b}')
-
局部变量
定义在函数内部的变量就是局部变量
作用域:从定义开始到函数结束
函数调用过程内存的变化
每次调用一个函数的时候系统会自动在栈区间开辟一个临时的内存空间,用来保存在函数中产生的数据(定义的变量),当函数调用结束后这块内存会自动释放(销毁)
-
函数的形参也是局部变量
-
global 和 nonlocal
-
global
只能在函数体中使用;功能:在函数中定义全局变量
global 变量名
变量名 = 数据
-
nonlocal
功能:在局部中局部中修改一个局部变量的值
语法和global一样
# 1.global m = 100 def fun2(): global m, n m = 200 print(f'函数内部m:{m}') # global n n = 10 # n是全局变量 fun2() print(f'函数外部m:{m}') print(f'函数外部n:{n}') # 2)nonlocal(了解) def fun3(): t = 100 def fun4(): nonlocal t t = 200 print(f'函数中的函数t:{t}') fun4() print(f'函数中的t:{t}') fun3()
-
-
-
03-匿名函数
-
匿名函数
匿名函数的本质是函数;在定义的时候不需要函数名(一般情况下不会使用匿名函数,在调用高阶函数的时候用的比较多)
语法:
lambda 形参列表:返回值
相当于:
def (形参列表):
return 返回值# 定义一个匿名函数求两个数的和 sum1 = lambda a, b: a + b print(sum1(10, 20)) # 练习:写一个匿名函数,获取两个数中较大的数 max_num = lambda num1, num2: max(num1, num2) print(max_num(10, 20)) func1 = lambda x: print(x) print(func1(100))