1.什么是返回值
返回值就是从函数内容传递到函数外部的数据(默认情况下函数内部产生的新数据,在函数外部不能使用)。
2.怎么确定函数返回值
a. python中每个函数都有返回值,返回值是什么就看执行函数体的时候遇到return关键字后面的数据就是什么;
如果没有遇到return,返回值就是None。
(希望作为返回值的数据在函数结束的时候放在return后面)
b. return的作用
遇到return会确定函数返回值并且直接结束函数
3.怎么在函数外部获取函数返回值
函数调用表达式的值就是函数的返回值,所以在函数的外部获取函数调用表达式的值就是在获取函数的返回值。
函数返回值的多种情况
# 1) 没有返回值
def func1(a, b):
print(a + b)
result1 = func1(10, 20)
print(result1)
# 2)一个返回值
def func2(a, b):
return a+b
result2 = func2(100, 200)
print(result2)
# 3)多个返回值(其实是一个元组)
def func3(a, b):
return a+b, a*b
result3 = func3(11, 22)
print(result3)
按照变量的作用域不同可以将变量分为全局变量和局部变量两种。
定义在函数和类外面的变量就是全局变量
作用域:从定义开始到文件结束的任意位置都可以使用
# a是全局变量
a = 100
for i in range(3):
print(f"循环内部:{a}")
print(f"循环外部:{a}")
# b是全局变量
for b in range(3):
# c是全局变量
c = "hello"
print(f"循环内部b:{b}")
print(f"循环外部b:{b}")
print(f"循环外部c:{c}")
定义在函数内部的变量就是局部变量
作用域:从定义开始到函数结束
补充:函数调用过程内存的变化
每次调用一个函数的时候系统会自动在栈区间开辟一个临时的内存空间,用来保存在函数中
产生的数据(定义的变量),当函数调用结束后这块内存会自动释放(销毁)。
def func3():
d = 123
print(f"内部函数d:{d}")
func3()
# 函数的形参也是局部变量
def func4(e, f=100):
print(e, f)
func4(200)
只能在函数体中使用;
功能:在函数中定义全局变量
global 变量名
变量名 = 数据
# 1.global
m = 100
n = 10
def func5():
# 在定义一个新的局部变量m
m = 200
print(m)
global n
n = 20 # n是全局变量
print(n)
global p
p = 300
print(p)
func5()
print(f"函数外部m:{m}")
print(f"函数外部n:{n}")
print(f"函数内部p:{p}")
功能:在局部的局部中修改一个局部变量的值
nonlocal 变量名
变量名 = 数据
# 2.nonlocal
def func6():
t = 100
def func7():
nonlocal t
t = 200
print(f"函数中的函数t:{t}")
func7()
print(f"函数中的t:{t}")
func6()
匿名函数的本质是函数;
在定义的时候不需要函数名(一般情况下不会使用,在调用实参高阶函数的时候用的比较多)
语法:
lambda 形参列表:返回值
相当于:
def (形参列表):
return 返回值
# 定义一个函数求两个数的和
sum1 = lambda num1, num2: num1 + num2
print(sum1(10, 20))
print(sum1(num1=2, num2=3))
# 练习:写一个匿名函数,获取两个数中较大的那个数
max1 = lambda num1, num2: num1 if num1 > num2 else num2
print(max1(5, 10))
python中定义函数其实就是在定义一个类型是function的变量,其中函数名就是变量名
普通变量能做的事情函数都可以做
所以函数就是变量
x = 100
def func1(n1, n2):
return n1*n2
# a.变量可以给另一个变量赋值
y = x
print(y+2)
z = func1
print(z(2, 3))
# b.变量可以作为列表的元素
list1 = [10, 20, x]
print(list1)
print(list1[-1]*2)
list2 = [10, 20, func1]
print(list2)
print(list2[-1](4, 5)) # 20
# c.变量可以重新赋值
x = "abc"
print(x[0])
func1 = 200
print(func1*3)
# e.变量可以作为函数的参数
def func2(t):
pass
func2(x)
func2(func1)