python中的内置函数(eval()篇)持续更新中

一. 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的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值