当前位置: 首页 > 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.xdnf.cn/news/33229.html

相关文章:

  • 指针----------C语言经典题目(2)
  • 【Docker项目实战】使用Docker部署NotepadMX笔记本工具
  • Feign:调用方与被调用方集成的对比及Feign继承的应用
  • C语言内存管理
  • 6. 话题通信 ---- 使用自定义msg,发布方和订阅方cpp,python文件编写
  • 发动机悬置橡胶弹性体试验机
  • Dify快速入门之chatflow
  • 常见设计模式
  • 【对Linux文件权限的深入理解】
  • 针对MCP认证考试中的常见技术难题进行实战分析与解决方案分享
  • 清华《数据挖掘算法与应用》K-means聚类算法
  • 考研408操作系统文件管理——4.2目录系统详解
  • Java PrintStream 类深度解析
  • QT聊天项目DAY06
  • 什么是事件循环
  • 2025年渗透测试面试题总结-拷打题库05(题目+回答)
  • 大学第一次笔记本清灰
  • Zephyr、FreeRTOS、RT-Thread 邮箱(Mailbox)对比分析
  • 【信息系统项目管理师】高分论文:论信息系统项目的采购管理(“营业工单系统”项目)
  • MySql Innodb详细解读
  • 【预告】【k8s系列6】RKE搭建Kubernetes集群
  • Codeforces Educational Round 177 Div. 2 【B题,C待补
  • Elasticsearch:使用 ES|QL 进行搜索和过滤
  • 嵌入式linux系统中内存管理的方法与实现
  • EKF公式推导
  • 工业级向量检索核心技术:IVF-PQ原理与全流程解析
  • [Android] 豆包爱学v4.5.0小学到研究生 题目Ai解析
  • 【IaaS自动化运维】Ansible与Terraform集成
  • 【仓颉 + 鸿蒙 + AI Agent】CangjieMagic框架(16):ReactExecutor
  • 【重学Android】02.Java环境配置的一些分享