学习笔记34函数是Python的头等对象

Posted SAP剑客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记34函数是Python的头等对象相关的知识,希望对你有一定的参考价值。

函数是Python的头等对象

我们可以把函数分配给变量、存储在数据结构中、作为参数传递给其他函数,甚至作为其他函数的返回值等。

函数是对象

Python程序中所有的数据都是由对象或者对象之间的关系来表示的。

字符串、列表、模块等都是对象,函数也不例外。

 

函数对象及其名称是相互独立的实体。

 

Python在创建函数时为每一个函数附加一个用于调试的字符串标识符,使用“__name__”属性可以访问这个内部标识符。

虽然函数的“__name__”是yell,但是已经无法使用这个名称在代码中访问函数对象了,名称标识符仅仅用来辅助调试,指向函数的变量和函数本身实际上是彼此独立的。

函数可存储在数据结构中

由于函数是头等对象,因此可以像其他对象一样存储在数据结构中。

访问存储在列表中函数对象与访问其他类型的对象是一样的。

 

函数可传递给其他函数

由于函数是对象,因此可以将其作为参数传递给其他函数。

 

将函数对象作为参数传递给其他函数的功能非常强大,可以用来将程序中的行为抽象出来并传递出去。能接受其他函数作为参数的函数被称为“高阶函数”。Python中具有代表性的高阶函数是内置的map函数,map接受一个函数对象和一个可迭代的对象,然后在可迭代对象中的每一个元素上调用该函数来生成结果。

函数可以嵌套

Python允许函数中定义函数,这种称之为“嵌套函数”或“内部函数”。

 

如果要在外部访问嵌套的内部函数,需要将内部函数返回给父函数的调用者。

 

函数可捕捉局部状态

内部函数不仅可以从父函数返回,还可以捕获并携带父函数的某些状态。

 

内部函数没有text参数,但是仍可以访问在父函数中定义的text参数,这种行为就称之为“词法闭包”(lexical colsure),简称闭包。闭包在程序流不在闭包范围内的情况下,也能记住封闭作用域(enclosing scope)中的值。

实际上,这就意味着函数不仅可以返回行为,还可以预先配置这些行为。

 

对象也可作为函数使用

Python中所有的函数都是对象,反之则不成立,有些对象不是函数,但是也可以调用,因此在许多情况下可以将其当成函数来看待。

如果一个对象是可调用的,说明它可以使用圆括号函数调用的语法,甚至可以传入参数,这些都靠“__call__”方法完成。

 

一个对象是否可以调用,Python内置了callable函数。

 

 

以上是关于学习笔记34函数是Python的头等对象的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记——函数

JavaScript 学习笔记 - 获取对象子集

Python100天学习笔记Day8 面向对象编程基础

Python100天学习笔记Day8 面向对象编程基础

python学习笔记--函数

Python学习笔记7:函数对象及函数对象作參数