python compile

compile(source, filename, mode[, flags[, dont_inherit]])

参数source:字符串或者AST(Abstract Syntax Trees)对象。

参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。

参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。如果是exec类型,表示这是一个序列语句,可以进行运行;如果是eval类型,表示这是一个单一的表达式语句,可以用来计算相应的值出来;如果是single类型,表示这是一个单一语句,采用交互模式执行,在这种情况下,如果是一个表达式,一般会输出结果,而不是打印为None输出。

exec_code="for i in range(5):    print i"
cmp_code=compile(exec_code,‘‘,‘exec‘)
exec cmp_code
cmp_code

0
1
2
3
4
Out[5]: <code object <module> at 00000000096FB730, file "", line 
eval_code=‘1+2‘
cmp_code2=compile(eval_code,‘‘,‘eval‘)
eval(cmp_code2)
cmp_code2

Out[31]: 3
Out[32]: <code object <module> at 00000000096FB6B0, file "", line 1>
cmp_code=compile(‘print "single"‘,‘‘,‘single‘)
exec cmp_code
cmp_code

eval_code=‘1+2‘
cmp_code2=compile(eval_code,‘‘,‘single‘)
eval(cmp_code2)
cmp_code2

cmp_code=compile(‘raw_input("pls input: ")‘,‘‘,‘single‘)
exec cmp_code
eval(cmp_code)
cmp_code
时间: 2024-10-03 23:12:12

python compile的相关文章

python compile、eval、exec内建函数

compile函数 compile()函数允许程序员在运行时刻迅速生成代码对象,然后就可以用exec 语句或者内建函 数eval()来执行这些对象或者对它们进行求值.一个很重要的观点是:exec 和eval()都可以执行字 符串格式的Python 代码.当执行字符串形式的代码时,每次都必须对这些代码进行字节编译处理. compile()函数提供了一次性字节代码预编译,以后每次调用的时候,都不用编译了. compile(source, filename, mode[, flags[, dont_i

Python初学者(五)

十四.正则表达式 正则表达式是用于处理字符串的功能强大的工具,但它并不是Python所独有的,许多编程语言都支持正则表达式,用法也都区别不大: Python中的正则表达式在re模块中: Python中的数量词默认是贪婪的,总是尝试匹配尽可能多的字符:非贪婪的则相反,总是尝试匹配尽可能少的字符(例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb":而如果使用非贪婪的数量词"ab*",将找到"a&qu

Python编译器实现内幕:添加一个新语句

Python编译器实现内幕:添加一个新语句 本文尝试理解Python前端的编译实现内幕,如果仅仅是读取文档,或者查看Python的实现代码,会让人感觉迷迷糊糊的,所以我的想法是动手来做一些事情:添加一个新语句until到Python编译器实现里. 所有跟本文相关的代码,都是使用Python3.4.3版本的代码,可以从CSDN的代码托管里找到,连接如下: https://code.csdn.net/caimouse/milang/tree/master 打开上面连接下载代码,就是简单直接打包下载,

python正则表达式之re模块使用

python第一个正则表达式 r'imooc'  Pattern Match result In [2]: import re In [3]: pa = re.compile(r'imooc') #re的compile方法生成pattern对象 In [4]: type(pa) Out[4]: _sre.SRE_Pattern In [5]: pa. pa.findall pa.fullmatch pa.match pa.search pa.subn pa.finditer pa.groupin

Cython保护python代码

注:.pyc也有一定的保护性,容易被反编译出源码... 项目发布时,为防止源码泄露,需要对源码进行一定的保护机制,本文使用Cython将.py文件转为.so进行保护.这一方法,虽仍能被反编译,但难度会比较大.另外,Cython是Python的超集. 自行安装Cython 1,创建complie.py文件 from Cython.Build import cythonizefrom Cython.Distutils import build_extfrom setuptools import se

【转】CentOS 6.5安装pyspider过程记录

原文地址:http://blog.sina.com.cn/s/blog_48c95a190102wczx.html 1.根据pyspider官方推荐的安装方法,使用pip命令直接安装pyspider # sudo pip install pyspider Installing collected packages: click, itsdangerous, Werkzeug, Flask, chardet, cssselect, lxml, pyquery, ordereddict, backp

ubuntu16.04 安装opencv3.3

from: http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ Step #1: Install OpenCV dependencies on Ubuntu 16.04 Most (in fact, all) steps in this tutorial will be accomplished by using your terminal. To start, open up your comm

python中eval, exec, execfile,和compile(转载)

此日志为转载,原文链接:http://skandgjxa.blog.163.com/blog/static/1415298201010262403483/ eval(str [,globals [,locals ]])函数将字符串str当成有效Python表 达式来求值,并返回计算结果. 同样地, exec语句将字符串str当成有效Python代码来执行.提供给exec的代码的名称空间和exec语句的名称空间相同. 最后,execfile(filename [,globals [,locals

python的re模块理解(re.compile、re.match、re.search)

import rehelp(re.compile)'''输出结果为:Help on function compile in module re: compile(pattern, flags=0) Compile a regular expression pattern, returning a pattern object.通过help可知:编译一个正则表达式模式,返回一个模式对象.''' '''第二个参数flags是匹配模式,可以使用按位或'|'表示同时生效,也可以在正则表达式字符串中指定.