2022-4-25学习日记 函数进阶

day-11函数进阶 学习总结

一.匿名函数

语法:

lambda 形参列表:返回值

​ 相当于

def(形参列表):

​ return 返回值

如何调用匿名函数 - 在匿名函数前加变量

函数名(变量) = lambda 形参列表:返回值

匿名函数的本质:匿名函数还是函数;普通函数中的绝大部分内容,匿名函数都支持。

二. 变量作用域

1. 变量作用域 - 变量的使用范围

根据变量作用域不同,可以将变量分为:全局变量、局部变量

1.1 全局变量

定义在函数或者类外面的变量就是全局变量(没有定义在函数里或者类里的变量就是全局变量)

作用域:从定义开始到程序结束

1.2 局部变量

定义在函数里面的变量就是局部变量(形参也是局部变量)。

作用域:从定义开始到函数结束

2. global关键字

变量能不能使用,看的是使用的时候内存中有没有。
定义全局变量的时候,全局变量保存在全局栈区间,程序结束后才会被自动释放;
局部变量是保存在函数对应的临时栈区间中,函数调用结束后就会被自动释放。

global是函数体中的关键字,可以再函数体中修饰变量,让变量在使用和保存的时候都在全局栈区间中进行。

  1. 函数中修改全局变量的值
    2) 直接在函数中定义全局变量

三、高阶函数

1. 函数就是变量

python中定义函数其实就是在定义一个类型为function的变量,函数名就是变量。

变量能做的事情,函数都可以做

2.高阶函数
  1. 实参高阶函数 - 函数的参数是函数
  2. 返回值高阶函数 - 函数的返回值是函数

四、常用的实参高阶函数

1. max、min、sorted、sort等 - 参数key要求是一个函数

函数名(序列,key=函数) - 按照函数制定的比较规则来获取序列中最大的元素

例如:max(序列,key=函数)

函数的要求:1.参数 - 有且只有一个参数,这个参数代表前面序列中的每个元素

​ 2.返回值 - 有一个返回值,返回值就是比较对象

注意:如果一个函数的参数就是函数,这个参数就有两种传值方式:a.普通函数的函数名 b.匿名函数

例如:获取nums中各个位数之和最小的元素

nums = [1002, 908, 99, 76, 502]
result = min(nums,key=lambda item:eval('+'.join(str(item))))
print(result)
result = min(nums,key=sum2)
print(result)
2. map

2.1 map(函数,序列) - 按照函数指定的规则将原序列转换为新的序列,返回值是map对象 - 本质是序列
函数要求:a.参数:有且只有一个参数;参数代表后面序列中的元素
b.返回值:有一个返回值;返回值就是新序列中的元素

2.2 map(函数,序列1,序列2)
函数要求:a.参数:有且只有两个函数,分别代表后面两个序列的元素
b.返回值:有一个返回值;返回值就是新序列中的元素

2.3 map(函数,序列1,序列2,序列3)
函数要求:a.参数:有且只有3个函数;分别代表后面三个序列的元素
b.返回值:有一个返回值;返回值就是新序列中的元素

例如:获取nums中所有元素的个位数

nums = [129,21,22,56,14,93]
# [9,1,2,6,4,3]
result = list(map(lambda item:item % 10,nums))
print(result)

3. reduce

reduce(函数,序列,初始值) - 按照函数指定的规则将序列中所有的元素合并成一个数据。

函数的要求:

参数:有且只有两个参数,第一个参数指向初始值,第二个参数代表序列中的每个元素

返回值:有一个返回值;描述初始值和元素之间的合并方式

# 将message中的数字相加 20+5+6.98 -> 31.89
from functools import reduce
message = ['你好', 20, '30', 5, 6.89, 'hello']
result = reduce(lambda i,item:i + item if type(item) in (int,float) else i + 0,message,0)
print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值