文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python之exec,eval,exe

2023-01-31 06:00

关注

1.exec

exec语句将字符串str当成有效Python代码来执行.提供给exec的代码的名称空间和exec语句的名称空间相同.exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句

>>> exec 'a=100'
>>> a
100
2.eval

1)eval(str [,globals [,locals ]])函数将字符串str当成有效Python表达式来求值,并返回计算结果。

>>> eval('2*3')
6

2)eval 将字符串生成语句执行。

#!/usr/bin/env python
from math import *
user_func = raw_input("type a function: y = ")
for x in range(1,10):
 
 

 
 

 

3.execfile

execfile(filename [,globals [,locals ]])函数可以用来执行一个文件

>>> execfile(r'c:\test.py')
hello,world!

4.参数
默认的,eval(),exec,execfile()所运行的代码都位于当前的名字空间中. eval(), exec,和 execfile()函数也可以接受一个或两个可选字典参数作为代码执行的全局名字空间和局部名字空间.

例如:

>>> globals = {'x' : 7,'y' : 10,'birds' : ['Parrot','Swallow','Albatross']}
>>> locals={}

# 将上边的字典作为全局和局部名称空间
>>> a=eval("3*x+4*y",globals,locals)
>>> a
61
>>> exec "for b in birds:print b" in globals,locals
Parrot
Swallow
Albatross
>>> execfile("a.py",globals,locals)

如果省略了一个或者两个名称空间参数,那么当前的全局和局部名称空间就被使用.如果一个函数体内嵌嵌套函数或lambda匿名函数时,同时又在函数主体中使用exec或execfile()函数时, 由于牵到嵌套作用域,会引发一个SyntaxError异常.

注意例子中exec语句的用法和eval(), execfile()是不一样的. exec是一个语句(就象print或while), 而eval()和execfile()则是内建函数.
exec(str) 这种形式也被接受,但是它没有返回值。
当一个字符串被exec,eval(),或execfile()执行时,解释器会先将它们编译为字节代码,然后再执行.这个过程比较耗时,所以如果需要对某段代码执行很多次时,最好还是对该代码先进行预编译,这样就不需要每次都编译一遍代码,可以有效提高程序的执行效率。
5.compile

compile(str ,filename ,kind )函数将一个字符串编译为字节代码, str是将要被编译的字符串, filename是定义该字符串变量的文件,kind参数指定了代码被编译的类型-- 'single'指单个语句, 'exec'指多个语句, 'eval'指一个表达式. cmpile()函数返回一个代码对象,该对象当然也可以被传递给eval()函数和exec语句来执行

>>> str="for i in range(0,10):print i"
>>> c=compile(str,'','exec')# 编译为字节代码对象

>>> exec c
0
1
2
3
4
5
6
7
8
9
>>> str2="3*x+4*y"
>>> c2=compile(str2,'','eval')# 编译为表达
>>> c2

print "x = ", x , ", y = ", eval(user_func)
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯