把函数视为对象
在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满
足下述条件的程序实体:
- 在运行时创建
- 能赋值给变量或数据结构中的元素
- 能作为参数传给函数
- 能作为函数的返回结果
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
看看下面两个示例:
- 创建一个函数,并读取它的__doc__属性,再检查它的类型.
- 通过别的名称实用函数,再把函数作为参数传递.
# 案例1
In [20]: def factorial(n):
...: """return n!"""
...: return 1 if n<2 else n*factorial(n-1)
...:
In [21]: factorial(12)
Out[21]: 479001600
# 获取对象属性
In [22]: factorial.__doc__
Out[22]: 'return n!'
# function类
In [23]: type(factorial)
Out[23]: function
# 案例2
In [24]: fact = factorial
In [25]: fact
Out[25]: <function __main__.factorial(n)>
In [26]: fact(5)
Out[26]: 120
In [27]: map(factorial, range(10))
Out[27]: <map at 0x7f9c08954e80>
In [28]: list(map(factorial, range(10)))
Out[28]: [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
上面两个案例,表现出对象的行为.
- 获取对象属性
- 查看对象的类
- 把对象当作参数
- 对象当作返回值
本文来自博客园,作者:码上的生活,转载请注明原文链接:https://www.cnblogs.com/zyl007/p/15171731.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异