【Python】调⽤eval函数赋值出现invalidsyntax错误-以及exec函数的使⽤Overview
超市管理规章制度
原⽂ eval 函数使⽤错误:
python笔记-调⽤eval函数出现invalid syntax错误
本来是想打算使⽤eval函数对变量进⾏赋值的,没想到出现了invalid syntax错误。源代码如下
In [2]:eval('a = 1')
File "<string>", line 1
a =1
^少年阿甘
SyntaxError: invalid syntax
百度没百度到结果,最后在stackoverflow上找到了好的答案,这⾥是原⽂链接。
作者的意思是,eval函数只负责对表达式进⾏处理,并没有赋值的功能,也就是说,eval函数只负责对
你的输⼊进⾏输出,True还是Fal ⼜或者是什么东西。但它本⾝是没有影响当前代码环境的能⼒的。如果我们想⽤来进⾏赋值,那么应该使⽤exec()函数。看代码:
In [3]:exec('a = 1')
In [4]: a
Out[4]:1息母
什么目寸光成语问题的解决⽅案已经供出了,那么我们现在再看看官⽅⽂档对这两个函数怎么说。
eval(expression, global=None, local=None)
龟兔赛跑的读后感参数是字符串和可选的global和local。global应当为⼀个字典⽂件,local应为⼀个映射对象。
expression参数将被处理为⼀个python的表达式(严格来说,是⼀串条件语句),global和local参数将被⽤来当做全局和局部的命名空间。英语趣味小故事
激励学习的名人名言exec(object[,global,[locals])
这个函数能够为python提供动态的代码执⾏功能。
看,官⽅对其功能的描述都是这么的不⼀样,有兴趣的同学可以去看更详细的⽂档~更详细的点这⾥
分类: PYTHON
标签: 学习笔记, python
犹太人为什么不受欢迎2019/May/22 更新
exec 函数应⽤
今天有个 群友 问了⼀个问题,我⾃⼰偏向于使⽤ exec 作为解决⽅案 - 充分利⽤ python 动态类型的特性。
我⼿写了解决⽅案的相对具体的实现代码
除了分割处简单处理,如果后⾯看了我给出的例⼦之后,对这⼀点有疑问,可以考虑使⽤ re 的空⽩符匹配,match + group 解决。
或者是读取数据的时候,惰性读取,实现类似 read-until-blank 的⼀个功能函数等等这样的解决⽅案即可
问题和解决⽅案:
关键点:
js 的 null 关键字绑定 Python 的 None
exec() 函数将字符串当作代码运⾏ - 允许 value 中含有不同类型
重复格式分割 - 上⽂已经提到了,处理之前要先分割⼀下。