python学习笔记之调⽤eval函数出现invalidsyntax错误问
题
pytho的使⽤和分发完全是免费的,它是⼀种⾯向对象的语⾔,它的。它的类模块⽀持多态,操作符重载和多重继承等⾼级概念,并且以python特有的简洁的语法和类型,OOP⼗分易于使⽤。python内置了众多预编译并可移植的功能模块,这些功能模块叫做标准库(standard library)。python可以调⽤C和C++的库,可以被C和C++的程序调⽤,可以与java组件集成,可以和COM和.Net等框架进⾏通信,并且可以通过SOAP、XML-RPC和CORBA等接⼝与⽹络进⾏交互,所以,python绝不仅仅是⼀个独⽴的⼯具。
本来是想打算使⽤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提供动态的代码执⾏功能。