内置函数— — eval、exec、compile
字符串类型代码:eval、exec、compile
eval() 执⾏字符串类型的代码,并返回最终结果
print(eval("2+2")) # 4
n=8
print(eval("2+n")) #
def func():
print(666)
eval("func()") #
# 简易计算器
code = input("请输入你要执行的代码:")
ret = eval(code)
print(ret)
>>>请输入你要执行的代码:1+2 + 3
>>>6
# 把字符串类型的代码还原回字典, 列表, 元组
s = "{'name':'alex', 'age':18, 'isMan':False}" # 字符串
ret = eval(s) # 侧重的有返回值
print(ret) # {'name': 'alex', 'age': 18, 'isMan': False}
print(type(ret)) # <class 'dict'>
exec() 执⾏字符串类型的代码,返回值永远为 None. (execute执行的缩写)
# 相比于 eval,exec可以执行更复杂的 Python 代码,但是也不能太长,不能太乱(那种要使用compile)
# 流程控制语句
exec("""
for i in range(10):
print(i)
""")
# 自定义函数
exec("""
def func():
print("我是周杰伦")
func()
""") print(exec("1+2+3+4")) # None 没有返回值. 想要返回值用eval
exec("print('hello,world')") # hello,world code = input("请输入你要执行的代码")
a = exec(code) # 没有返回值. 想要返回值用eval
print(a)
>>>请输入你要执行的代码1+2 + 3
>>>None code = input("请输入你要执行的代码")
exec(code) # 没有返回值. 想要返回值用eval
print(a) # pycharm报错不一定准
# 这里的代码a在pycharm中是出红线了,因为它不知道这里的a是什么,上面的代码没有定义过.但是代码执行
之后在控制台输出了正确的结果并没有报错,因为你在input函数执行时候的控制台中输入了a = 'alex'(反正就是以代码(字符串)的形式创建并赋值了变量a)
>>>请输入你要执行的代码a = 'alex'
>>>alex
compile 将字符串类型的代码编译成字节代码对象。代码对象能够通过exec语句来执行或者eval()进行求值。
语法:
compile(source, filename, mode[, flags[, dont_inherit]])
参数说明:
1. 参数source:要执⾏的代码, 动态代码⽚段
2. 参数 filename:文件名, 代码存放的文件名, 当传入了第一个参数的时候, 这个参数给空字符串就可以了。代码要么直接以字符串代码的形式给出,要么存
#流程语句使用exec
code1 = "for i in range(10): print(i)" #代码
c1 = compile(code1, "", mode="exec") # 预加载代码
exec(c1) # 运行代码 # 字符串代码内部存在print就不需要再print了
>>>
0
1
2
3
4
5
6
7
8
9 #简单求值表达式用eval
code2 = "1+2+3"
c2 = compile(code2, "", mode="eval")
a = eval(c2)
print(a)
>>>
6 #交互语句(比如input)用single
code3 = "name = input('请输⼊入你的名字:')"
c3 = compile(code3, "", mode="single")
exec(c3)
print(name) # 字符串代码内部不存在print就需要再print
>>> print(name)#执行前name变量不存在,解释器红线报错
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
name
NameError: name 'name' is not defined
>>> #执行时显示交互命令,提示输入
请输⼊入你的名字:Mary >>> print(name) #执行后name变量有值,输出
Mary
小结:
有返回值的字符串形式的代码⽤eval().
没有返回值的字符串形式的代码用exec().
一般很少⽤到compile()
内置函数— — eval、exec、compile的更多相关文章
- 内置函数——eval、exec、compile
内置函数——eval.exec.compile eval() 将字符串类型的代码执行并返回结果 print(eval('1+2+3+4')) exec()将自字符串类型的代码执行 print(exec ...
- Python内置函数eval
英文文档: eval(expression, globals=None, locals=None) The arguments are a string and optional globals an ...
- Python内置函数(62)——exec
英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. obj ...
- 29 内置方法 eval | exec 元类 单例
eval与exec内置方法 将字符串作为执行目标,得到响应结果 eval常用作类型转换:该函数执行完有返回值 exec拥有执行更复杂的字符串:可以形成名称空间 eval内置函数的使用场景: 1.执 ...
- Python内置函数(20)——exec
英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. obj ...
- python 内置函数eval()、exec()、compile()
eval 函数的作用: 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式,而不是复杂的代码逻辑. eval(source, globals=None, locals=Non ...
- python内置函数 eval()、exec()以及complie()函数
1.eval函数 eval() 函数用来执行一个字符串表达式,并返回表达式的值. eval(expression[, globals[, locals]]) 参数 expression -- 表达式. ...
- 内置函数---eval、exec、compile
eval() 将字符串类型的代码执行并返回结果 print(eval('1+2+3+4')) exec()将自字符串类型的代码执行 print(exec("1+2+3+4")) e ...
- 内置函数--eval
eval参数是一个字符串, 可以把这个字符串当成表达式来求值, 比如'x+2'就是一个表达式字符串>>> x = 2>>> print (eval('x+2'))2 ...
随机推荐
- NET 实例化泛形对象并赋值
1.泛形方法:具体实例点击查看BuilderResultList /// <summary> /// 实例化泛形对象并赋值 /// </summary> /// <typ ...
- Spring Boot 复习
简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭 建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义 ...
- if控制器,如何传参。
- English--分词短语
English|分词短语 现在开始讲解分词短语的内容.在英语的语法世界里面,想要将句子写的漂亮,分词短语,你值得拥有! 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力 ...
- 下载安装Tomcat教程
注:由于我的笔记不知怎么滴不能复制粘贴我就直接贴图了
- CSS3 完善盒模型
CSS3 改善了传统盒模型结构,增强了盒子构成要素的功能,扩展了盒模型显示的方式. 改善结构:为盒子新增轮廓区: 增强功能:内容区增强 CSS 自动添加内容功能,增强内容移除.换行处理:允许多重定义背 ...
- Socket-网络服务提供的一种机制
网络编程 网络通信的要素 Ip,端口,协议(tcp/udp) 127.0.0.1 本机地址 默认主机名:localhost 端口号:用于标识进程的逻辑地址. 有效端口:0-65535 其中 ...
- 微信分享接口的java开发的一些小步骤
1.配置接口信息进行验证 代码如下: /** * 访问没认证的地址跳转 * * @param request * @return 登录页面 * @throws ...
- Docker以http访问Harbor私有仓库(一)
1 说明 前文Centos7搭建Harbor私有仓库(一)我们成功搭建Harbor,本篇我们主要配置Docker以http方式访问私有仓库 2 Docker配置 2.1 Mac系统 2.1.1 配置D ...
- ls - 列出目录清单信息
ls - list directory contents 列出目录内容 格式: ls [OPTION]... [FILE]... 常用选项: -a:显示所有文件或目录(包括隐藏目录和.(当前目录),. ...