一等函数

作者: 凹凸曼_ebb9 | 来源:发表于2018-04-15 20:48 被阅读0次

一等对象

在python中,函数是一等对象。编程语言学家把“一等对象”定义为满足下述条件的程序实体:

(1)在运行时创建。

(2)能赋值给变量或数据结构中的元素。

(3)能作为参数传给函数。

(4)能作为函数的返回结果

下例展示了函数对象里的“一等”本性。我们可以把factorial函数赋值给fact,然后通过变量名调用。我们还可以把它作为参数传给map函数。map函数返回一个可迭代对象,里面的元素是把第一个参数应用到第二个参数中各个元素上得到的结果。

高阶函数

接受函数为参数,或者把函数作为结果返回的函数是高阶函数

map、filter和reduce的替代品

函数式语言通常会提供map、filter和reduce三个高阶函数,但是由于引入列表推导和生成器表达式,它们没那个重要了,列表推导或生成器表达式具有map和filter两个函数的功能,并且易于阅读。

例:计算阶乘列表:map和filter与列表推导比较

例:使用reduce和sum计算0~99之和

sum和reduce的通用思想是把某个操作连续应用到序列的元素上,累计之前的解雇,把一系列值规约成一个值。all和any也是内置的规约函数。

all:如果iterable的每个元素都是真值,返回True

any:只要iterable中有元素是真值,就返回True

匿名函数

python简单的句法限制了lambda函数的定义体只能使用纯表达式。换句话说,lambda函数定义体中不能赋值,也不能使用while和try等python语句。

例:使用lambda表达式反转拼写,然后依次给单词列表排序。

可调用对象

除了用户定义的函数,调用运算符(即())还可以应用到其他对象上。如果想判断对象是否可以调用,可以使用内置的callable()函数。python数据模型文档列出了7种可以调用的对象:

用户定义的函数:使用def或lambda表达式创建。

内置函数:使用c语言实现的函数,如len或time.strftime

内置方法:使用c语言实现的方法,如dict.get

方法:在类的定义体中定义的函数。

类:调用时会用__new__方法创建一个实例,然后运行__init__方法,初始化实例,最后把实例返回给调用方。

类的实例:如果类定义了__call__方法,那么它的实例可以作为函数调用。

生成器函数:使用yield关键字的函数或方法。调用生成器函数返回的是生成器对象。

用户定义的可调用类型

不仅是python函数是真正的对象,任何python对象都可以表现得像函数,为此,只需实现实例方法__call__。

下例实现了BingoCage类。这个类的实例使用任何可迭代对象构建,而且会在内部存储一个随机顺序排列的列表。调用实例会取出一个元素。


相关文章

  • 《JavaScript函数式编程》读书笔记之第二章 一等函数与A

    一等函数与Applicative编程 函数式一等公民 函数式语言应该是促进创造和使用函数的。“一等”通常用来描述值...

  • 函数编程-js-v1.0.0

    摘要:函数式编程中函数有三种不同的解读方式,分别为纯函数、高阶函数和一等函数。关键词:纯函数、一等函数、高等函数、...

  • 函数式编程

    JavaScript函数式编程 函数式编程的基础是一等函数(函数在js中作为一等公民)、作用域(词法作用域,动态作...

  • 函数式编程

    函数式编程不是用函数来编程,旨在将复杂的函数符合成简单的函数。 1.函数是一等公民。所谓”第一等公民”(first...

  • 第二章 一等函数与 Applicative 编程

    2.1 函数是一等公民 在 JavaScript 中,函数就是一等公民。 函数与数字一样,可以存储为变量 cons...

  • 简述函数式编程

    函数式编程思维 函数式编程常用的核心概念 概念:1、函数是一等公民。所谓“一等公民”,指的是函数与其他数据类型一样...

  • 简析JavaScript中的函数式编程(二)

    一等函数和Applicative编程 一等函数可以被看成与其他数据一样的函数。 1.可以被储存在变量中 2.可以被...

  • 第4天,函数进阶

    [toc] 一、函数对象 在python中,函数是一等对象,“一等对象”满足下述条件的程序实体: 可以被引用 可以...

  • Fluent Python笔记--一等函数

    Python中的函数是”一等公民“。所谓一等公民,含义是: 运行时创建; 能够赋值给变量; 能作为参数传给函数; ...

  • 一等函数

    一等对象 在python中,函数是一等对象。编程语言学家把“一等对象”定义为满足下述条件的程序实体: (1)在运行...

网友评论

    本文标题:一等函数

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