Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python之exec,eval,exe

python之exec,eval,exe

作者头像
py3study
发布于 2020-01-07 09:09:52
发布于 2020-01-07 09:09:52
7850
举报
文章被收录于专栏:python3python3

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)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文搞懂python的内建函数,自己添加一个print函数
写python的同学应该都用过print函数,这个函数我们没有定义为什么可以调用?
香菜聊游戏
2021/10/19
8550
一文搞懂python的内建函数,自己添加一个print函数
Python学习笔记3.2-python内置函数大全
学习python不可避免的首先要了解python的内置函数,熟悉了这些以后可以给编程带来很大的方便。 1、数学运算类 函数名 函数功能 备注 abs(x) 求绝对值 1、参数可以是整型,也可以是复数2
锦小年
2018/01/02
8810
深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
Python猫
2019/04/09
6720
python内建函数
abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。如果给出复数,返回值就是该复数的模。例如:
超蛋lhy
2018/08/31
1.1K0
python内置函数大全
最近一直在看python的document,打算在基础方面重点看一下python的keyword、Build-in Function、Build-in Constants、Build-in Types、Build-in Exception这四个方面,其实在看的时候发现整个《The Python Standard Library》章节都是很不错的,其中描述了很多不错的主题。先把Build-in Function罗列一下吧,初学者的了解,分类可能不准确,一起交流。
超蛋lhy
2018/08/31
9690
Python 实用小技巧(1)
argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的。
数据STUDIO
2021/06/24
4010
Python中的eval()、exec()及其相关函数
刚好前些天有人提到eval()与exec()这两个函数,所以就翻了下Python的文档。这里就来简单说一下这两个函数以及与它们相关的几个函数,如globals()、locals()和compile():
全栈程序员站长
2022/09/08
9330
Python内置(3)exec&eval、globals&locals、input&print、5个基本类型、object
exec (execute执行)的缩写。将一些Python代码作为字符串接收,并将其作为Python代码运行。默认情况下,exec将在与其余代码相同的范围内运行,这意味着它可以读取和操作变量,就像Python文件中的任何其他代码段一样。
一只大鸽子
2022/12/06
5990
[PYTHON] 核心编程笔记(14.P
在python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件
py3study
2020/01/06
6740
深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
程序员小新
2021/12/30
6260
Python自学之路-内置函数说明及实例(二)
这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。
Bug生活2048
2018/08/31
6150
Python自学之路-内置函数说明及实例(二)
[Python] 函数与函数编程
函数体就是在调用函数时所执行的一系列语句。调用函数的方法是在函数名称后面加上参数。参数的顺序必须与函数定义匹配,否则会引发TypeError异常。可以为函数的参数设置默认值,例如:
py3study
2020/01/14
1.5K0
深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
Python猫
2019/03/24
3K0
Python内置函数(BIF)查询(附中文详解说明)
我们知道,Python 解释器内置了一些常量和函数,叫做内置常量(Built-in Constants)和内置函数(Built-in Functions),来实现各种不同的特定功能,在我的另外一篇博客中 第8章:Python计算生态  讲述了一些常用的内置函数的使用方法,但是随着Python的版本的不断更新,以及Python2与Python3的一些差异,内置函数的个数以及具体用法有些许的差异,罪保险的方法就是得到自己使用版本的内置函数的会用方法,那么问题就来了,我们怎么在 Python IDLE 里得到全部内置常量和函数的名字以及其具体用法呢?
用户7886150
2020/12/22
1.3K0
Python - eval 和 exec 函数
Python 支持通过 eval 函数执行字符串命令,本文记录相关内容。 eval eval() 函数用来执行一个字符串表达式,并返回表达式的值。 语法 以下是 eval() 方法的语法: eval(expression[, globals[, locals]]) 参数 expression – 表达式。 globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。 locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。 示例 a="[1,2,3,4,5]"
为为为什么
2022/08/04
8020
python compile、eval、
    compile()函数允许程序员在运行时刻迅速生成代码对象,然后就可以用exec 语句或者内建函数eval()来执行这些对象或者对它们进行求值。一个很重要的观点是:exec 和eval()都可以执行字符串格式的Python 代码。当执行字符串形式的代码时,每次都必须对这些代码进行字节编译处理。compile()函数提供了一次性字节代码预编译,以后每次调用的时候,都不用编译了。
py3study
2020/01/09
1.4K0
python补充之进制转换、exec、eval、compile
计算指定表达式的值。也就是说它要执行的python代码只能是单个表达式(注意eval不支持任何形式的赋值操作),而不能是复杂的代码逻辑。
GH
2019/12/16
4960
35.python execfile/exec函数
python内置函数execfile 和 内置函数exec功能实际上都一样,不过函数execfile是python2.0版本,函数exec属于python3.0版本,在使用的时候注意区分一下,具体使用方法参考下面的详细介绍。
猿说编程[Python和C]
2020/03/12
1.9K0
人生苦短我用python: eval,e
01、函数原型 eval(expression[, globals[, locals]])
py3study
2020/01/15
9130
exec()和元类
exec执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码,
GH
2019/12/16
7530
相关推荐
一文搞懂python的内建函数,自己添加一个print函数
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档