Python入门第十一天-高阶函数

day11-高阶函数

一、高阶函数

1、函数就是变量

  • 定义函数就是在定义变量,函数名就是变量名
  • python中定义函数就是定义类型是function的变量,函数名就是变量名
  • 变量能做的函数都能做
  • 函数加括号是在获取返回值,假如使用时没有加括号,就是获得一个函数
x = 100
def func1():
    print('我是一个函数')
  • 一个变量可以给另外一个变量赋值
y = x
print(y + 100)

z = func1
z()        # 我是一个函数,令z调用函数
  • 修改变量的值
x = 'abc'
print(x + '123')     # abc123

func1 = 100        # 由函数变成了数字
print(func1 + 200)   # 300
  • 变量作为序列的元素
x = 100
list1 = [x, 200]
print(list1)      # [100, 200]

list2 = [func1, 200]
list2[0]()      # 调用函数:我是一个函数

list3 = [func1, 200, func1()]
print(list3)          # [<function func1 at 0x000001EF4BEBA048>, 200, None]
  • 变量作为函数的参数
def func2(m):
    print(f'x:{m}')

a = 100
func2(a)      # x:100
func2(func1)   # x:<function func1 at 0x000001B04CC4A048>
  • 变量作为函数的返回值
def func3():
    def s():
        print('我是小函数')
    return s

func3()()   # 我是小函数;func3() ->在调用函数,即s;相当于func3()() -> s()
  • 面试题
# 面试题
list3 = []
for i in range(5):
    list3.append(lambda x: x*i)   # lambda是函数体,定义函数时不会执行函数体
'''
i = 0 : [lambda x :x*i]
i = 1 : [lambda x :x*i, lambda x :x*i]
i = 2 : [lambda x :x*i, lambda x :x*i, lambda x :x*i]
i = 3 : [lambda x :x*i, lambda x :x*i, lambda x :x*i, lambda x :x*i]
i = 4 : [lambda x :x*i, lambda x :x*i, lambda x :x*i, lambda x :x*i, lambda x :x*i]
list3 = [lambda x :x*i, lambda x :x*i, lambda x :x*i, lambda x :x*i, lambda x :x*i] 此处i = 4
'''

print(list3[1](2))   # 8
print(list3[2](2))   # 8

二、实参高阶函数

1、实参高阶函数

  • 参数是函数的函数就是实参高阶函数
# func1就是实参高阶函数
def func1(x):
    print(x())

def func2(m=10):
    print('您好!')

func1(func2)

2、系统常见的实参高阶函数的使用

  • max、min、sorted、map、reduce
(1)max 和 min
  • max(序列) - 比较序列中元素的大小来获取值最大的元素
  • max(序列,key = 函数)- 函数决定求最大值时的比较对象是什么
  • 参数key的要求:
  • a.必须是函数
  • b.这个函数有且只有一个参数(这个参数指向的就是序列中的元素)
  • c.函数要有一个返回值(比较对象)
  • d.key后面一般跟匿名函数,匿名函数后面是比较啥就取啥
nums = [23, 78, 90, 78, 233, 91]
print(max(nums))


# 求列表中个位数最大的元素
nums = [19, 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值