Python内置函数——compile

compilecompile(source, filename, mode[, flags[, dont_inherit,[optimize]]])

1.这个函数用来编译一段字符串的源码,结果可以生成字节码或者AST(抽像语法树),

字节码可以使用函数exec()来执行,而AST可以使用eval()来继续编译。

2.参数source是一串字符串的源码,或者是AST对象数组。

3.参数filename是读取字符串的文件对象,

如果不是从文件里读取源码来编译,那么这里可以放一些用来标识这些代码的字符串。

4.参数mode是用来指明那种表示的源码类型;

如果是exec类型,表示这是一个序列语句,可以进行运行;

如果是eval类型,表示这是一个单一的表达式语句,可以用来计算相应的值出来;

如果是single类型,表示这是一个单一语句,采用交互模式执行,

在这种情况下,如果是一个表达式,一般会输出结果,而不是打印为None输出。

5.可选参数flags和dont_inherit是用来控制编译源码时的标志,

可以查看PEP236文档来了解这些参数,以及相关编译的说明。

如果两者使用缺省参数(也即两者都是零值),

在调用本函数编译时,主要使用代码中指明的编译特征来对待;

如果flags参数设置有值,而dont_inherit没有设置(即是零值),

那么编译代码时,不仅源码的编译特征起作用,而且flags指明的特征也起作用,相当两者的并集;

如果参数dont_inherit设置有值(即是非零值),

编译语句时只有参数flags指明的编译特征值起作用,即是不使用源码里指明的特征。

编译特征是按位图的方式设置到参数里,可以查看__future__。

6.可选参数optimize是用来指明编译器使用优化的等级;

缺省值是-1,表示使用命令行参数-O中获取的优化等级为准;

如果设置值为0(即是不用优化,__debug__是设置true),是没有优化;

如果设置值为1,assert语句被删除,__debug__设置为false;

如果设置值为2,除了设置值为1的功能之外,还会把代码里文档说明也删除掉,达到最佳优化结果。

7.本函数编译代码时,如果语法出错会返回SyntaxError;

如果代码包含一些空字节,则返回类型错误TypeError。

注意事项:

1.当采用single或eval类型编译时,

如果有多行代码,每行代码后面至少有一个换行符\,否则在code模块编译时就会提示编译的源码不完整错误。

在Python 3.2版本之后,允许输入Windows或Mac的换行符;

2.当采用exec模式时,不需要在每个行后面输入换行符;在这个版本之后增加了优化参数。In [16]: str = "for i in range(10): print(i)"

In [17]: c = compile(str,'','exec') #编译为字节代码对象

In [18]: exec(c)

0

1

2

3

4

5

6

7

8

9

In [19]: str = "3*x + 4*y"

In [20]: c = compile(str,'','eval') #编译为表达式

In [23]: x,y = 3,4

In [24]: eval(c)

Out[24]: 25

以上就是Python内置函数——compile的内容,更多相关内容请关注PHP中文网(www.gxlcms.com)!

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

python内置函数可以用来_Python内置函数——compile相关推荐

  1. python内置函数调用前_python之内置函数(一)

    一.内置函数 1.内置函数总览 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() ...

  2. python中read函数解释_Python内置函数解释教程,readwill(非常详细的代码演示截图),详解,看,了,就,会,很...

    内置函数 abs() 获取绝对值 all() 接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False any() 接受一个迭代器,如果迭代器里有一个元素为真,那么返回True ...

  3. python中int的功能_Python内置函数int()高级用法

    int()函数常用来把其他类型转换为整数,例如: >>> int(3.2) 3>>> int(1/3) 0 其实,int是Python内置类型之一,之所以能够当作函 ...

  4. python内置函数调整_python - 内置函数

    一.内置函数 嵌入到主调函数中的函数称为内置函数,又称内嵌函数. 作用是提高程序的执行效率,大多编程语言都有自己的内置函数. 1.作用域相关 deffunc(): name= 'alex' print ...

  5. python中dir的使用_python中dir函数如何使用?

    python中,有很多的模块,有的时候搞不清或者记不住这些模块的用法,一个个检索会很麻烦,这时我们可以使用dir函数.dir函数是python中的内置函数,它可以用来列出模块定义的标识符如函数.类和变 ...

  6. python中函数作用域_Python中的函数作用域

    在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...

  7. python的help怎么用_python的help函数如何使用

    help函数是python的一个内置函数,在python基础知识中介绍过什么是内置函数,它是python自带的函数,任何时候都可以被使.help函数能作什么.怎么使用help函数查看python模块学 ...

  8. python中int什么意思_python 的 int() 函数是什么,怎么用

    int()函数是python的一个内置函数,用于把一个字符串或者数字转换为[整型],下面来具体看一下: 工具/原料 IDLE 电脑 方法/步骤 1 int()的常用语法: int(字符串或者数字,进制 ...

  9. python help函数 实现_Python 的 help 函数使用

    help函数是python的一个内置函数,在python基础知识中介绍过什么是内置函数,它是python自带的函数,任何时候都可以被使.help函数能作什么.怎么使用help函数查看python模块学 ...

最新文章

  1. javascript_core_01之数据类型与运算
  2. 求两个数组的最长重复子数组 Maximum Length of Repeated Subarray
  3. 成功解决AttributeError: ‘Series‘ object has no attribute ‘columns‘
  4. oracle中的char和j,oracle中char与varchar2的区别
  5. 每天一道LeetCode-----从右向左观察一棵二叉树,返回能看到的元素
  6. 【Transformer】CrossFormer:A versatile vision transformer based on cross-scale attention
  7. java基础知识系列---垃圾收集
  8. 一行python代码值多少钱_一行python代码
  9. 微信 语音转文字 java,在微信——怎么将语音转化为文字,你需要学习了
  10. 全网都在用的超全【面试刷题小程序】,最新版激活教程
  11. 初识java中数组、数组在内存中、越界异常、空指针异常
  12. centos 编译安装 mysql_CentOS7编译安装MySQL5.7.24的教程详解
  13. 拓端tecdat|R语言乘法GARCH模型对高频交易数据进行波动性预测
  14. 学生选课管理系统(毕业设计)
  15. DAY38:域的组成与内网信息搜集
  16. FLASH寿命测试!
  17. Java链表-合并两个有序链表
  18. 很好用的数据库设计工具PDMan,强力推荐
  19. 台式计算机加固态硬盘,台式机添加固态硬盘教程_台式主机固态硬盘怎么安装-win7之家...
  20. Linux文本比较指令(diff,cmp)详解

热门文章

  1. VM虚拟机中Linux扩展磁盘空间的方法
  2. JEECG 技术交流群
  3. 结构与算法(03):单向链表和双向链表
  4. 架构设计基础:单服务.集群.分布式,基本区别和联系
  5. 华为云TaurusDB性能挑战赛-java赛题mvn编译时报错:不支持multi-catch
  6. 经典假设检验理论记录一二
  7. 初级程序员为避免淘汰该怎么办?
  8. 网站XML格式的网站地图(sitemap)格式
  9. C#中哈希表(HashTable)的用法详解
  10. XP下安装SQL2000企业版本(转载)