day12-匿名函数
匿名函数
匿名函数的本质还是函数,他们除了定义的语法不同,其他的东西都一样
语法:
lambda 形参列表:返回值
转换为普通:
def (形参列表):
return 返回值
sum2 = lambda num1,num2: num1+num2
print(sum2(20,30))
# 练习:写一个匿名函数判断指定的数是否是偶数,如果是返回True,否则返回False
a = lambda num1:num1 % 2 == 0
print(a(16))
# 练习2:写一个匿名函数判断指定的年是否是闰年,如果是返回True,否则返回False
b = lambda num2:num2%100 != 0 and num2 % 4 == 0 or num2 % 400 == 0
print(b(2000))
变量的作用域
变量的作用域
变量的作用域:变量定义以后可以使用的范围
根据变量作用域的不同我们将变量分为全局变量和局部变量两种
全局变量和局部变量
1) 全局变量
没有定义在函数和类里面的变量都是全局变量;
全局变量的作用域是从定义开始到程序结束
全局变量保存在全局的栈区间,全局栈区间在程序结束后才会自动释放
2)局部变量
定义在函数中的变量是局部变量,其中包括形参;
局部变量的作用域是从定义开始到函数结束
调用函数的时候系统会自动给这个函数创建一个临时栈区间用来保存在函数中产生的数据(包括局部变量)
当函数调用结束这个临时栈区间会自动释放
函数就是变量
-
在python中定义函数其实就是定义类型是function的变量,函数名就是变量名
变量能干的事情函数都可以做 -
高阶函数:实参高阶函数、返回值高阶函数
实参高阶函数
常用的实参高阶函数:max、min、sorted(sort)、reduce
如果函数的参数是函数提供实参的方式:a.用普通的函数的函数名 b.使用匿名函数
常用的实参高阶函数
max、min、sorted、列表.sort
max(序列) - 求序列中值最大的元素
max(序列,key=函数) - 根据函数指定的规则获取序列中最大的元素
函数的要求:1)有且只有一个参数(这个参数代表序列中的元素)
2)有一个返回值(比较对象)
min(序列,key=函数) - 根据函数指定的规则获取序列中最小的元素
sorted(序列,key=函数) - 根据函数指定的规则对序列中的元素进行从小到大排序
# 练习:获取nums中绝对值最大的元素
nums = [29, 73, 64, -31, 68, 55, -76]
print(max(nums,key=lambda a:a if a>=0 else -a))
# 练习:获取points中y坐标最大的元素
points = [(19, 2), (0, 18), (3, 4)]
print(max(points,key=lambda a:a[-1]))
# 获取年龄最大的学生;获取成绩最高的学生
students = [
{
'name': 'stu1', 'age': 19, 'score': 72},
{
'name': 'stu2', 'age': 22