网站icp查询,网站备案认领,全国大学生平面设计大赛,wordpress文件下载漏洞#x1f308;个人主页#xff1a;羽晨同学
#x1f4ab;个人格言:“成为自己未来的主人~” 我们这篇文章来说一下函数的返回值和匿名函数
函数的返回值
我们先来看下面的这一段函数的定义代码
# 1、返回值的意义
def func1():print(111111111------start)num166print…
个人主页羽晨同学
个人格言:“成为自己未来的主人~” 我们这篇文章来说一下函数的返回值和匿名函数
函数的返回值
我们先来看下面的这一段函数的定义代码
# 1、返回值的意义
def func1():print(111111111------start)num166print(111111111------end)
由于我们学过一些python的基本知识前面的文章中所以我们可以很清楚的明白这段代码所打印出来的结果。
而当我们这个时候想要打印这个函数内部的变量的时候直接打印是不可以的。
print(num1) # 访问不了的会报错
这个会进行报错原因是因为定义在函数内部的变量只能在当前函数的内部调用。当出了这个变量的作用域的时候这个变量会进行销毁。
那么我们应该怎么操作来调用到这个变量呢这个时候就需要用到返回值了
我们来看下面的这一段代码
# a.
def func1():print(111111111------start)num166print(111111111------end)return num1
# 调用函数
f1func1() # 调用了func1的函数同时将func1函数额返回值赋值给f1
print(返回值,f1)
print(func1()10) # 调用了func1函数并把返回值和10相加
func1() # 不需要在函数外面使用函数的返回值
在这段代码当中我们就用到了返回值并使用返回值使得func1中的变量得到打印。
那如果我们未设置返回值那么会打印出来什么呢
我们来看这一段代码
# 未设置返回值
# 注意如果一个函数未通过return来设置返回值默认的返回值为None
def func2():print(22222)
r2 func2()
print(r2) # None: 空值
在这段代码中我们调用了func2函数并用r2来想要接收它的返回值。
但是当我们打印r2的时候却发现结果是None 所以这段代码其实等价于下面的这段代码。
# 等价于
def func2():return None
这两段代码都是将返回值设置为了空。
需要注意的是 return只能使用在函数中表示结束函数。 在函数中和return平级【对齐】的情况下return后面不写任何语句否则均为无效。 我们看这段代码
def func3():print(start-------)returnprint(end--------) # 这句代码不能执行,永远没有执行的可能性
func3() # start------- 我们可以看到的是这个return后面的代码是不会执行的。
但是下面的这段代码却有执行的可能性因为条件判断语句的存在可真可假。
def func32(n):print(start-------)if n %20:returnprint(end---------) # 有执行的可能性
func32(7)
return xxx 表示结束函数
我们来看下面的这一段代码
return xxx表示结束函数同时将xxx数据返回到调用函数处
def func33(a,b):totalabreturn total
r33func33(4,5)
print(r33) 在同一个函数中根据条件的区分可以设置多个return xxx
def compare(num1,num2):if num1num2:return 1elif num1num2:return 2else:return 3
comcompare(4,5)
print(com)def compare(num1,num2):if num1num2:return 1elif num1num2:return 2return 3
comcompare(4,5)
print(com)这两段代码是完全等效的。
看到这里其实return的用法我们已经说了很大的一部分了那么接下来我们说一下如果一下子返回多个数的情况。
我们来看下面的这一段代码
def func34():return 1,2,3,4,5
r34func34()
print(r34) # (1, 2, 3, 4, 5) 打包结果是一个元组
这个代码在执行之后打印出来的是一个元组这是因为将返回值进行了打包
接下来我们谈一下break和return的区别
# d. break 和 return的区别
def func41():print(start----111111)for n in range(3):for m in range(5):print(n,m)if m1:break # break只能使用在循环中结束当前循环print(end-----1111111)
func41()
print(* * 50)
def func41():print(start----111111)for n in range(3):for m in range(5):print(n,m)if m1:return # return 只能使用在函数中表示结束函数无论多少循环print(end-----1111111)
func41() break只能使用在循环当中结束当前循环而return只能使用在函数中表示结束函数。
函数封装的注意事项
观察需求是否有未知项参与运算如果有那么将未知项设置为参数观察需求函数执行完毕后是否有结果如果有结果则将结果设置为返回值
匿名函数
语法 lambda 形参:返回值
我们来看几个例子
def add(n):return n10
# 调用函数并获取返回值
fadd(5)
print(f)
这是我们定义的一个普通的add函数 # 定义函数/创建函数
f1 lambda n:n10
print(f1) # function lambda at 0x000001E3F3528860
# 调用函数并获取返回值
print(f1(2))
r2f1(5)
这是我们定义出来的一个完全等效的匿名函数。
我们再来举一个例子 def check1(a,b):return a**2b**2
r1check1(4,5)
print(r1)f2lambda a,b:a**2b**2
r2f2(4,5)
print(r2)上面的那个是原本的函数下面的那个是等效出来的匿名函数。
匿名函数的使用
常常将匿名函数作为另一个函数的参数使用
列表sort(key,reverse)
如果列表中的元素支持大小比较那么默认会直接排序。
numlist[23,6,7,5,2,7,9,5,8,6]
numlist.sort(reverseTrue)
print(numlist) 如果列表中的元素无法直接比较大小的时候或者需要自定义排序的规则时则给key赋值一个函数即可
将列表中的元素依次传递给func函数该函数的返回值就是指定的排序的规则一定要注意的是这个返回值必须可以比较大小。
def rule(x):print(x)return x
但是我们也可以使用匿名函数
students.sort(keylambda stu_dict:stu_dict[score],reverseTrue)
这个我们一般经常使用。
好了这次的内容就到这里我们下次再见。