当前位置: 首页 > news >正文

Python 一等函数( 把函数视作对象)

把函数视作对象

示例 5-1 中的控制台会话表明,Python 函数是对象。这里我们创建了一
个函数,然后调用它,读取它的 doc 属性,并且确定函数对象本
身是 function 类的实例。

示例 5-1 创建并测试一个函数,然后读取它的 doc 属性,再
检查它的类型

>>> def factorial(n): ➊
... '''returns n!'''
... return 1 if n < 2 else n * factorial(n-1)
...
>>> factorial(42)
1405006117752879898543142606244511569936384000000000
>>> factorial.__doc__ ➋
'returns n!'
>>> type(factorial) ➌
<class 'function'>

➊ 这是一个控制台会话,因此我们是在“运行时”创建一个函数。
doc 是函数对象众多属性中的一个。
➌ factorial 是 function 类的实例。
doc 属性用于生成对象的帮助文本。在 Python 交互式控制台
中,help(factorial) 命令输出的内容如图 5-1 所示。

图 5-1:factorial 函数的帮助界面;输出的文本来自函数对象的
doc 属性

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

示例 5-2 通过别的名称使用函数,再把函数作为参数传递

>>> fact = factorial
>>> fact
<function factorial at 0x...>
>>> fact(5)
120
>>> map(factorial, range(11))
<map object at 0x...>
>>> list(map(fact, range(11)))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]

有了一等函数,就可以使用函数式风格编程。函数式编程的特点之一是
使用高阶函数——这是下一节的话题。

http://www.dtcms.com/a/143250.html

相关文章:

  • AtCoder ABC402 A~D 题解
  • 五分钟学会如何基本使用JJWT!!!
  • Linux系统编程 day6 进程间通信mmap
  • 借助LlamaIndex实现简单Agent
  • Day2—3:前端项目uniapp壁纸实战
  • 深入理解 MCP 协议:开启 AI 交互新时代
  • 【人工智能】再谈探索AI幻觉及其解决方案(进一步整理)
  • 信创开发:开启信息自主创新、国产替代新时代
  • [Java微服务组件]注册中心P3-Nacos中的设计模式1-观察者模式
  • mysql控制单表数据存储及单实例表创建
  • 生物化学笔记:医学免疫学原理23 免疫检查点分子与肿瘤免疫治疗(PD-1抑制剂黑色素瘤)
  • 【进程信号】五、信号集操作接口详解
  • SICAR标准功能块 FB1514 “Robot_request_FB”
  • 增量式PID基础解析与代码实例:温控系统
  • 有效的完全平方数--LeetCode
  • HFSS3(limy)——建模学习记录
  • 工业级MIFI解决方案:打造低时延、高可靠性的Wi-Fi网络快速部署体系!
  • 【专刷】滑动窗口(一)
  • 字符串系列一>二进制求和
  • HTML5+CSS3小实例:CSS立方体
  • 在RK3588上使用哪个流媒体服务器合适
  • 性能比拼: Elixir vs Go(第二轮)
  • JAVA的泛型
  • C++项目 —— 基于多设计模式下的同步异步日志系统(3)(日志器类)
  • 前端面试中高频手撕[待补充]
  • BR_频谱20dB 带宽(RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Bandwidth])
  • RAG工程-基于LangChain 实现 Naive RAG
  • 从GET到POST:HTTP请求的攻防实战与CTF挑战解析
  • 嵌入式linux系统中内存管理的方法与实现
  • 筑基挑战 | 第14期