登录
首页 >  文章 >  python教程

Python函数对象保存了哪些信息?

时间:2026-01-18 12:27:40 487浏览 收藏

学习文章要努力,但是不要急!今天的这篇文章《Python 函数对象保存了哪些信息?》将会介绍到等等知识点,如果你想深入学习文章,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

Python函数对象是包含代码、环境、元数据和自定义属性的完整运行时对象,其__code__保存字节码与变量信息,__closure__和__globals__记录作用域状态,__name__等提供反射能力,且支持动态添加属性。

Python 函数对象本身保存了哪些信息?

Python 函数对象本身是一个完整的运行时对象,它不仅包含可执行的代码逻辑,还内建保存了大量与定义、调用和行为相关的信息。这些信息在函数创建时被自动捕获并绑定到函数对象上,是实现闭包、装饰器、反射和动态调用等特性的基础。

函数的代码与执行环境信息

函数对象通过 __code__ 属性保存编译后的字节码及配套元数据,包括:

  • co_code:原始字节码(bytes 类型)
  • co_consts:字面量常量元组(如数字、字符串、嵌套函数对象)
  • co_names:全局变量名元组(如 print, len
  • co_varnames:局部变量名元组(含参数名和内部定义的变量)
  • co_freevars:自由变量名元组(用于闭包,即外部作用域中被引用但未定义的变量)
  • co_cellvars:单元变量名元组(当前函数中定义、又被嵌套函数引用的变量)

绑定的运行时上下文

函数对象会记录其定义时所处的作用域状态:

  • __closure__:由 cell 对象组成的元组,每个 cell 包含一个自由变量的当前值(仅当函数是闭包时非空)
  • __globals__:定义该函数时所在的全局命名空间(dict),决定 global 查找范围
  • __defaults__:位置参数默认值元组(如 def f(x, y=10) 中的 (10,)
  • __kwdefaults__:关键字参数默认值字典(如 def f(*, z=42)

函数的标识与元数据

用于调试、文档和反射的关键属性:

  • __name__:函数名(定义时的标识符,不随赋值改变)
  • __qualname__:带作用域的全限定名(如 Outer.inner
  • __doc__:文档字符串("""..."""
  • __module__:定义该函数的模块名(如 "__main__""math"
  • __annotations__:类型注解字典(如 {"x": int, "return": str}

用户附加的自定义属性

函数对象是可变的,支持动态绑定任意属性:

  • 任意键名:如 f.version = "1.2"f.author = "Alice"
  • 这些属性不会影响调用行为,但常被装饰器或框架用来标记元信息(如 Flask 的 @app.route 会设置 __route__

今天关于《Python函数对象保存了哪些信息?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>