eval和exec函数的区别(eval函数和int函数的区别)
14082023-08-04
style="text-indent:2em;">各位老铁们好,相信很多人对eval和exec函数的区别都不是特别的了解,因此呢,今天就来为大家分享下关于eval和exec函数的区别以及Python为啥不建议用eval的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
1.指定类型转换
1>>>y=int(input())2103>>>type(y)4<class'int'>
2.自动转换
函数eval()用来执行一个字符串表达式,并返回表达式的值
eval(expression,globals[],locals[])
global和locals分别相当于全局和局部变量,eval函数会优先在局部变量存储空间中检索
1>>>y=eval(input())24.53>>>type(y)4<class'float'>
3.切割转换
利用函数split()通过指定分隔符对字符串进行切片。
str.split(str="",num=string.count(str))
str为分割符,包括空格、\n,\t等,num是分割次数。
在python中可以使用import语句来导入一个模块,当导入一个不存在的模块时会抛出一个ImportError异常,所以可以使用try-catch语句来捕获这个异常,相应的代码如下:
当然,题主的意思可能模块名需要用户输入,而不是像这样写死在代码里的,这就需要使用python的一个内置函数exec(注意是exec而不是eval,eval只能执行表达式),exec函数接收一个字符串参数并把这个字符串当做一条python语句执行,改进后的代码如下:
当然还有另一种思路,可以通过piplist或pipfreeze命令来获取全部已经安装的模块,并判断该模块是否在其中,可以通过字符串匹配或正则表达式来判断模块是否在列表中,而为了获取piplist命令的返回结果,需要使用os模块的popen函数(不能使用system函数因为这个函数无法得到命令的输出结果),相应的代码如下:
input()得到的是字符串
eval(input()如果输入的是数字,则转换为数字;如果不是数字,报错。
int(input())如果是数字,整数的话,没为题,小数的话,丢失小数部分;如果不是数字,报错。
eval函数将字符串当成有效Python表达式来求值,并返回计算结果<pret="code"l="python">x=1
eval('x+1')
eval('x==1')与之对应的repr函数,它能够将Python的变量和表达式转换为字符串表示<pret="code"l="python">repr(x==1)
repr(x+1)
关于eval和exec函数的区别到此分享完毕,希望能帮助到您。