一. eval()函数
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
eval()的语法:eval(expression[, globals[, locals]])
其中的几个参数
expression:表达式
globals:变量作用域,全局命名空间;如果被提供,必须是一个字典对象.
locals:变量作用域,局部命名空间,如果被提供,可事实任何映射对象.
返回值
返回expression的计算结果。
(通俗的理解这个式子:
1.eval(表达式,globals,locals)
2.eval(表达式,globals)
3.eval(表达式)
下面我们通过一些具体的例子来解释这个式子的应用
实例1:
a=1
print(eval('a+1'))
执行结果:
这个过程中eval()函数省略了后两项,实现了将‘a+1’这个字符串的引号去掉,并进行解析和计算得出2这个结果。
这个过程说明eval()函数可以将字符串转换为数字。
实例2(在globals指定情况下):
a=1
g={'a':3}
print(eval('a+1',g))
执行结果:
这次代码中eval()函数中除了表达式还有 globals参数,这个时候eval()函数的作用域就变成了g这个字典,会屏蔽掉a=1这个语句,因此输出的结果为4
实例3(在locals指定情况下):
a=1
b=2
c=3
g={'a':4,'b':5}
t={'b':6,'c':7}
print(eval("a+b+c",g,t))
执行结果:
执行这个代码得出的结果为17,说明其中a=4,b=6,c=7,对于a=4不做过多的解释.
这里b为什么是6呢?是当globals和locals起冲突时,locals起决定性作用,这属于一种作用域覆盖问题,对于很多的编程语言一样,globals是全局变量作用域,locals是局部变量的作用域,局部作用域会覆盖全局的,所以b=6.
另外:
print('%.2f' %eval(input()),end='')
这一行代码可以直接实现四则运算,其中计算结果保留两位小数。
以上均为个人理解,欢迎大佬来补充和指正,有什么看不懂的地方可以私聊我,我也刚开始学习这门语言,也不断的更新有关python的内容。