美文网首页
Python高阶函数

Python高阶函数

作者: XYZeroing | 来源:发表于2017-09-09 13:01 被阅读0次

在面向对象的编程中,一切皆对象,字符串是对象,列表是对象,函数也是对象

变量

拿字符串举例,创建一个字符串,Python就在内存中创建一个字符串对象

'string'  # 在内存中创建字符串对象
'string'
 # 看起来是将字符串赋予变量s,实际上是将字符串对象'string'的引用指向了s,
# 因此变量s指向了对象'string'
s = 'string' 

那么对于函数呢:

abs(-10)  # 函数调用
10
abs  # 函数本身
<function abs>

因为一切皆对象,所以函数也是对象,那么函数在创建的时候也是在内存中创建了一个求取绝对值的函数对象,那么函数名是什么呢,由上面字符串的例子可以猜测,函数名也是一个变量,该变量是对函数对象的引用。

f = abs  # 将函数赋予变量f
f(-200)  # 通过变量f调用求取绝对值的函数
200

另一个问题来了,看下面:

def output(s):
    print('变量s指向的对象是:{}'.format(s))
output(s)
变量s指向的对象是:string

传入函数

可以看到指向字符串的变量可以作为参数传入函数,其他的诸如列表、字典等也可以作为参数传入函数,那么指向函数的变量是否也可以传入函数呢?

def func(f, num):
    return f(num)
func(abs, -202)
202
def div_2(num):
    return num / 2
func(div_2, 854)
427.0

我们将函数abs作为参数传入了函数func,也可以将自定义的函数作为参数传入了func

输出函数

函数可以输出变量,那么是否可以输出函数呢?

def out_func(x):
    def power_fun(y):
        return y ** x
    return squ_fun
print(out_func(3))
<function squ_fun at 0x7f5ec0867510>

返回了函数squ_fun(),该函数相当于一个求取立方的函数,返回下面的函数

def power_fun(y):
    return y ** 3
print(out_func(3)(3))  #调用返回函数
27

上面的相当于先获得一个求取立方数的函数,在调用求取立方数的函数,在打印结果

所以可以接受函数作为参数的函数,或者输出函数的函数称为高阶函数

阅读

廖大的教程
Python笔记(二):高级特性之高阶函数

相关文章

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

  • Python高阶函数

    本文要点 1.什么是高阶函数 2.python中有哪些常用的高阶函数 什么是高阶函数? 在了解什么是高阶函数之前,...

  • wangyanhua--python2

    基本函数的使用 匿名函数 常用系统高阶函数 高阶函数 常用系统高阶函数 Python递归 安装第三方库 三国小说人...

  • Python函数式介绍一 - 高阶函数

    Python函数式介绍一 - 高阶函数Python函数式介绍二 - 链式调用 最近为了给朋友推广Python函数式...

  • Python高阶函数学习笔记

    python中的高阶函数是指能够接收函数作为参数的函数 python中map()函数map()是 Python 内...

  • 【Python】-014-函数-函数式编程-2

    python内置高阶函数 Filter函数filter(function, sequence) -> list, ...

  • 函数式编程--高阶函数

    高阶函数英文叫Higher-order function。什么是高阶函数?举例说明。变量可以指向函数以Python...

  • 高阶函数(Python)

    什么是高阶函数(Python)? 高阶函数:能接收函数做参数的函数 变量可以指向函数 函数的参数可以接受变量 一个...

  • filter函数有点意思

    filter函数 filter(function, iterable)filter函数是python中的高阶函数,...

  • 高阶python 函数式编程

    高阶python 函数式编程 - 函数式 函数式编程(FunctionalProgramming) - 基于lam...

网友评论

      本文标题:Python高阶函数

      本文链接:https://www.haomeiwen.com/subject/bpwojxtx.html