高阶函数| 学习笔记

简介: 快速学习高阶函数

开发者学堂课程Python入门 2020年版高阶函数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10345


高阶函数

内容介绍:

一、 把一个函数当作另一个函数的返回值

二、  加深理解一

三、 把一个函数当作另一个函数的参数

 

一、把一个函数当作另一个函数的返回值

1

def test():

print('我是test函数’)

return'hello'

def  demo()

print('我是demo函数’)

return test

def   bar()

print('我是bar函数’)

return test()

如果这样写:x=test(),加了括号后会调用这个函数,也就是‘我是test函数’会被打印,而且如果此时打印x的话,x的值是拿到 test 函数的执行结果,也就是 hellox hello,所以这个地方肯定会打印 hello 的。

2、除了这个之外,再写一个y= demo(),这个地方如果这样写的话,这个代码只会打印‘我是 demo 函数’, ytest 的函数,所以这个时候y既然是这个函数的,写 y() 就相当于调的是 test 这个函数,再来写一个z=y(),y=demo()

然后就是调用 demo 函数拿到 demo 的执行结果,它的执行结果又是一个 test 函数,也就是 y tes t函数,加一个括号是调test函数,test函数肯定打印‘我是 test 函数’,同时拿到 test 函数的返回值结果,返回值结果是个 hello,所以打印的结果肯定就是 hello

y=demo

print(y)

z=(y)

print(z)

3、再写个a=bar(),如果打印的话,’我是 bar 函数肯定要执行,bar 里面写的是test(),直接就调过来了,还会接着打印我是 test 函数

a的值就是 hello a 拿到 bar 的执行结果, bar 的结果是 test 执行的结果,test 的执行结果是 hello,也就是bar的结果是调 testtest 的结果是 hello,那 a 就是hello

不可以直接写a(),因为a是字符串,不是函数,不能直接这么写。

a=bar()

print(a)

二、加深理解一

def test():

print('我是test函数’)

return'hello'

def  demo()

print('我是demo函数’)

return test

def   bar()

print('我是bar函数’)

return test()

1、现在有三个函数,一个叫test,一个叫 demo,还有一个叫 bar,这里 tests 的话。 

test 会打印‘我是 test 函数’,然后 demo 会打印‘我是 demo 函数’,这个 bar 它会打印我是 bar 函数‘。

它们各自都有返回值,test 执行结果是 hello,是一个字符串,demo它的执行结果是 test,它指向的是 test 函数,bar 的结果是 test(),括号就是拿到这个函数的执行结果,也就是拿到test的函数的执行结果,test 的执行结果是 hello

2、a=bar()

print(a)

a=bar()是调用一下 bar,调完之后,把bar的执行结果给到 a。调 bar 函数首先会打印‘我是 bar 函数‘,然后再往下它会调test test()的意思就是会调 test 函数,只要一调 test 函数,test 的里的函数内容就会执行,会打印’我是 test 函数‘。

所以写完 a=bar 的时候它会打印’我是bar函数‘,同时还会打印’我是 test的函数‘,因为这里写的是 test(),它会调这个 test,这个代码就出来了,最后 bar 函数执行的结果是 test 的结果,test 的结果是 hello,所以 a 的结果就是 hello
3
x=test

print(x)

x等于test,也就是把 test 执行了一下,执行 test 会打印我是 test 函数,然后这个地方return   hello,这个结果就是 x 等于 hello

4y=demo()

print(y)

z=y()

print()

demo 会执行 demo 里的代码,它首先肯定会打印‘我是这个 demo 函数’,现在这个时候函数已经执行完了,执行完之后,这个 demo 返回的结果是个函数,返回 test 的时候 test 后面没有加括号也就是这个地方函数没有被调用,这时候y就是 test 函数,如果打印 y,结果就是 test 函数。

如果再写个 z= y(),就是调这个 test 函数,会告诉我是 test 函数

z等于y执行的结果,也就是 test的执行结果,test 的执行结果是 hello。所以这个z就是 hello. 

5、答疑

1a=bar()a不是bar的别名,而是a执行bar,并把bar的结果赋值给a,如果想给这个bar起别名应该是a=bar,不能加括号,只要加括号就是调用这个函数。(2)return test是没有执行的,y=demo的时候是调这个 demo 拿到这个demo 函数执行结果,它的执行结果是一个 test 函数,也就是 y 是一个函数。

调不调y都指向了 test 函数,现在想要执行这个东西得写个 y(),才可以执行这个test

打印y的结果会打印函数的类型和内存地址,它会告诉它是一个函数,然后它的内存地址是什么,以后讲面向对象的时候会讲这个东西。

 

三、把一个函数当做另一个函数的参数

比如说 sortfiltermapreduce,主要是 lambda 表达式的使用,这只是一种使用场景。

相关文章
|
5月前
|
存储 算法
什么是高阶函数
什么是高阶函数
108 1
|
12月前
|
JavaScript 前端开发 Java
函数式编程入门:理解纯函数、高阶函数与柯里化
函数式编程入门:理解纯函数、高阶函数与柯里化
149 0
1 # 高阶函数
1 # 高阶函数
57 0
|
存储 缓存 算法
【Python高级编程】—— 函数式编程总结(生成器、迭代器、匿名函数、高阶函数、返回函数、闭包、装饰器、偏函数)
Python函数式编程的一般概念及特点, 迭代器、生成器表达式、内置函数、常用高阶函数、递归与归约、实用模块和装饰器的用法, 以及避开Python严格求值顺序的变通方法、Web服务设计方法和一些优化技巧。
280 1
【Python高级编程】—— 函数式编程总结(生成器、迭代器、匿名函数、高阶函数、返回函数、闭包、装饰器、偏函数)
|
存储 开发者 Python
匿名函数的使用介绍 | 学习笔记
快速学习 匿名函数的使用介绍
135 0
匿名函数的使用介绍 | 学习笔记
高阶函数实战
高阶函数实战
72 0
|
分布式计算 Scala 开发者
高阶函数的介绍和使用 | 学习笔记
快速学习高阶函数的介绍和使用
|
Python
Python编程:内置高阶函数
Python编程:内置高阶函数
Python编程:内置高阶函数
|
开发者 Python
高阶函数| 学习笔记
快速学习高阶函数
|
编译器 Scala 开发者
函数柯里化 | 学习笔记
快速学习函数柯里化