内置函数——eval、exec、compile

eval() 将字符串类型的代码执行并返回结果

print(eval('1+2+3+4'))

exec()将自字符串类型的代码执行

print(exec("1+2+3+4"))
exec("print('hello,world')")
code = '''
import os
print(os.path.abspath('.'))
'''
code = '''
print(123)
a = 20
print(a)
'''
a = 10
exec(code,{'print':print},)
print(a)
code = '''
import os
print(os.path.abspath('.'))
'''
code = '''
print(123)
a = 20
print(a)
'''
a = 10
exec(code,{'print':print},)
print(a)

compile  将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

参数说明:   

1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。  

2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。  

3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。

 
>>> #流程语句使用exec
>>> code1 = 'for i in range(0,10): print (i)'
>>> compile1 = compile(code1,'','exec')
>>> exec (compile1)
1
3
5
7
9 >>> #简单求值表达式用eval
>>> code2 = '1 + 2 + 3 + 4'
>>> compile2 = compile(code2,'','eval')
>>> eval(compile2) >>> #交互语句用single
>>> code3 = 'name = input("please input your name:")'
>>> compile3 = compile(code3,'','single')
>>> name #执行前name变量不存在
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
name
NameError: name 'name' is not defined
>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:'pythoner'
>>> name #执行后name变量有值
"'pythoner'"

内置函数——eval、exec、compile的更多相关文章

  1. Python内置函数eval

    英文文档: eval(expression, globals=None, locals=None) The arguments are a string and optional globals an ...

  2. Python内置函数(62)——exec

    英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. obj ...

  3. 29 内置方法 eval | exec 元类 单例

    eval与exec内置方法 将字符串作为执行目标,得到响应结果 eval常用作类型转换:该函数执行完有返回值 exec拥有执行更复杂的字符串:可以形成名称空间 eval内置函数的使用场景:   1.执 ...

  4. Python内置函数(20)——exec

    英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. obj ...

  5. python 内置函数eval()、exec()、compile()

    eval 函数的作用: 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式,而不是复杂的代码逻辑.    eval(source, globals=None, locals=Non ...

  6. 内置函数— — eval、exec、compile

    字符串类型代码:eval.exec.compile eval()  执⾏字符串类型的代码,并返回最终结果 print(eval("2+2")) # 4 n=8 def func() ...

  7. python内置函数 eval()、exec()以及complie()函数

    1.eval函数 eval() 函数用来执行一个字符串表达式,并返回表达式的值. eval(expression[, globals[, locals]]) 参数 expression -- 表达式. ...

  8. 内置函数---eval、exec、compile

    eval() 将字符串类型的代码执行并返回结果 print(eval('1+2+3+4')) exec()将自字符串类型的代码执行 print(exec("1+2+3+4")) e ...

  9. 内置函数--eval

    eval参数是一个字符串, 可以把这个字符串当成表达式来求值, 比如'x+2'就是一个表达式字符串>>> x = 2>>> print (eval('x+2'))2 ...

随机推荐

  1. JS相关知识点总结

    一.获取元素方法 1.document.getElementById("元素id号"); 可以使用内置对象document上的getElementById方法来获取页面上设置了id ...

  2. Angular总结三:组件

    Angular 的应用就是一棵组件树,一个页面可以是一个组件,某一页面的一个区块也可以是一个组件.为了弄明白组件及组件树,我将原来做过的一个静态网站进行组件改造. 原项目地址 https://gith ...

  3. OSSpinLockLock加锁机制,保证线程安全并且性能高

    在aspect_add.aspect_remove方法里面用了aspect_performLocked, 而aspect_performLocked方法用了OSSpinLockLock加锁机制,保证线 ...

  4. 【bzoj 4066】 简单题

    题目 显然这就是让我们在二维上数个点 如果没有强制在线就随便做啦,扫描线+主席树应该是最好的选择 但是现在强制在线并且卡了树套树的空间,于是只能上\(kdt\)了 我们还是维护一下每个子树分割出来的矩 ...

  5. Hive学习之路 (十三)Hive分析窗口函数(一) SUM,AVG,MIN,MAX

    数据准备 数据格式 cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, cookie1,, 创建数据库及表 create datab ...

  6. virtualbox+vagrant学习-2(command cli)-14-vagrant reload命令

    Reload 格式: vagrant reload [vm-name] 其等价于在运行vagrant up命令后接着运行vagrant halt 要使在Vagrantfile文件中所做的更改生效,通常 ...

  7. virtualbox+vagrant学习-2(command cli)-16-vagrant snapshot命令

    Snapshot快照 这是用于管理客户机器快照的命令.快照记录客户计算机的时间点状态.然后可以快速恢复到此环境.这可以让你进行试验和尝试,并迅速恢复到以前的状态. 快照并不是每个provider都支持 ...

  8. sqoop数据导入命令 (sql---hdfs)

    mysql------->hdfs sqoop导入数据工作流程: sqoop提交任务到hadoop------>hadoop启动mapreduce------->mapreduce通 ...

  9. ASP.NET Razor引入命名空间(视图中数据序列化)

    问题描述: 视图有时可以作为保存数据的载体,使用Razor语法给我们带来便捷的同时,也会使我们陷入局限.@可以保存int.bool.string等类型,但却保存不了对象类型,例如Dictionary. ...

  10. Python的open函数文件读写线程不安全,logging模型文件读写线程安全!

    工作中遇到的问题:如何在多线程的程序中同时记录日志? 最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入 ...