Python的Code对象
Code对象表示字节编译的可执行Python代码或字节码。
Code对象和函数对象之间的区别在于:
- 函数对象包含对函数的全局变量(定义它的模块)的显式引用,而Code对象不包含上下文
- 默认参数值也存储在函数对象中,而不是存储在Code对象中(因为它们表示在运行时计算的值)。
- 与函数对象不同,代码对象是不可变的,并且不包含(直接或间接)可变对象的引用。
code对象可以用来获取python程序运行过程中的函数名称。
参考链接:
https://docs.python.org/2/reference/datamodel.html#objects-values-and-types
特殊的只读属性:
特殊的只读属性 | 解释 |
---|---|
co_name | 给出函数名称 |
co_argcount | 是位置参数的数量(包括具有默认值的参数) |
co_nlocals | 是函数使用的局部变量数(包括参数) |
co_varnames | 是一个包含局部变量名称的元组(以参数名称开头) |
co_cellvars | 是一个元组,包含嵌套函数引用的局部变量的名称 |
co_freevars | 是一个包含自由变量名称的元组 |
co_code | 是表示字节码指令序列的字符串 |
co_consts | 是一个包含字节码使用的文字的元组。如果Code对象是函数,则co_consts为函数文档字符串,如果没有定义则为None |
co_names | 是包含字节码使用的名称的元组 |
co_filename | 是编译代码的文件名 |
co_firstlineno | 是函数的第一个行号 |
co_lnotab | 是一个字符串,用于编码从字节码偏移到行号的映射 |
co_stacksize | 是所需的堆栈大小(包括局部变量) |
co_flags | 是一个整数,用于编码解释器的许多标志 |
co_flags的标志位:
标志位 | 说明 |
---|---|
0x04 | 使用*arguments语法接受任意数量的位置参数 |
0x08 | 使用**keywords语法接受任意数量的键-值参数 |
0x20 | 函数是生成器 |
0x2000 | 函数是在未来分区启用的情况下编译的 |
0x10与0x1000 | 应用于Python的早期版本 |
Python的Code对象相关推荐
- python执行pyc文件_Python 编译:code对象 与 pyc文件
运行程序 当在shell中敲入python xx.py运行 Python 程序时,就是激活了 Python 解释器. Python 解释器并不会立即运行程序,而是会对 Python 程序的源代码进行编 ...
- Python变量和对象类型速记手册
变量和对象类型 Python中关于变量和对象类型有一些重要的概念: 变量不受类型约束 变量并不是一块内存空间的标签,只是对象的名字,是没有类型的,相当于一个可以指向任何对象void指针.类型属于对象, ...
- Python 动态获取对象的属性和方法(内含inspect)
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sysdef foo():passclass Cat(object):def __init__(se ...
- python类和对象_Python类和对象
python类和对象 Python is an object-oriented programming language. Python Classes and Objects are the cor ...
- python:tzinfo 对象
python:tzinfo 对象 class datetime.tzinfo 这是一个抽象基类,也就是说该类不应被直接实例化. 请定义 tzinfo 的子类来捕获有关特定时区的信息. tzinfo 的 ...
- python之⾯向对象-多态
python之⾯向对象-多态 ⼀. ⾯向对象三⼤特性 封装 将属性和⽅法书写到类的⾥⾯的操作即为封装 封装可以为属性和⽅法添加私有权限 继承 ⼦类默认继承⽗类的所有属性和⽅法 ⼦类可以重写⽗类属性和⽅ ...
- python之⾯向对象-继承
python之⾯向对象-继承 ⼀. 继承的概念 ⽣活中的继承,⼀般指的是⼦⼥继承⽗辈的财产. 拓展1:经典类或旧式类 不由任意内置类型派⽣出的类,称之为经典类. class 类名:代码...... 拓 ...
- python之⾯向对象基础
python之⾯向对象基础 ⼀. 理解⾯向对象 ⾯向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. 例如:洗⾐服 思考:⼏种途径可以完成洗⾐服? 答: ⼿洗 和 机洗. ⼿洗:找盆 - 放 ...
- python做bi系统_如何使用Python创建可视化对象
早前,Power BI就已经支持使用Python创建可视化对象了,当你遇到自定义程度较高的可视化对象时,Python就大大的派上了用场:那么我们如何使用呢?接下来小悦就为各位伙伴们介绍一下吧~ 首先, ...
- python一切皆对象的理解_Python中万物皆对象?的理解
在很多地方都看到有过这样一句话,但是对象这个词的理解依然停留在谈朋友那个对象上-- python中一切皆为对象,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) ...
最新文章
- Redis 深度历险:核心原理与应用实践
- PHP-fpm的master进程杀死work还能处理任务吗
- java 保垒机telnet,开源堡垒机系统Teleport
- 深度学习(08)-- Residual Network (ResNet)
- shiro分布式控制登录状态_Shiro——强大且易用的Java安全框架(四)
- 第五:Pytest之收集用例规则与运行指定用例
- java设置全选_[Java教程]jQuery设置checkbox全选(区别jQuery版本)
- 【总结整理】openlayer加载搜狗地图,qq地图,mapabc
- 裸辞自学java和报培训班_程序员:裸辞十多天,不敢告诉家里人,假装每天上班,安静地成长...
- 量化7年1000万知与行,回测量化7年如果只每月定投5.4万到沪深300指数基金,能否实现7年1000万
- 微软输入法怎么打开软键盘?
- 台式电脑接路由器步骤_台式电脑插线步骤图连接路由器(路由器最正确的连接方法)...
- 计算机最基础知识复制文件,电脑基础入门知识-复制粘贴文件图文教程
- 直接在浏览器运行Python代码
- 日常运维工作的知识体系
- 台式计算机负荷,简单计算台式电脑功率
- 短视频高流量的秘诀,上热门全靠这些技巧
- 东西归置20210815
- 数据库原理之候选码的判断方法
- 【修真院web小课堂】请描述 BFC(Block Formatting Context) 及其如何工作