80. Python eval函数

您所在的位置:网站首页 python将浮点数转化为整数型 80. Python eval函数

80. Python eval函数

2023-03-27 05:42| 来源: 网络整理| 查看: 265

1. 知识回顾2. eval函数3. eval函数的语法4. 返回字符串表达式的计算结果5. eval实现数据类型之间的转换6. 知识总结

1. 知识回顾

将字符串转换成能计算的数据,我们学过2个函数。

int函数:将整数类型的字符串转换为整数。

float函数:将小数类型的字符串转换为浮点数。

我们之前在学数据转换的时候,特别强调过:

小数类型的数据不能直接使用int函数进行转换。

【将整数型字符串转换为整数】

x = '15' print(int(x)) print(type(int(x)))

【终端输出】

15

变量x原本是字符串类型,int函数将其转换成整数类型。

int函数的作用是脱去字符串的引号。

【小数类型的字符串不能直接用int函数】

x = '15.5' print(int(x)) print(type(int(x)))

【终端输出】

ValueError: invalid literal for int() with base 10: '15.5'

这里的变量x也是字符串类型,但它是小数类型的字符串,就不能直接使用int函数。

运行代码程序报错:invalid literal for int() with base 10: '15.5'。

【将整数类型的数据转换成浮点数】

x = '15' print(float(x)) print(type(int(x)))

【终端输出】

15.0

变量x原本是字符串类型,float函数将其转换成浮点数类型。

float函数的作用是脱去字符串的引号。

原来字符的数据为整数15,使用float函数后整数15变成了浮点数15.0。

float函数改变了原有的字符串里的数据类型。

【将小数类型的数据转换成浮点数】

x = '15.5' print(float(x)) print(type(int(x)))

【终端输出】

15.5

变量x原本是字符串类型,float函数将其转换成浮点数类型。

float函数的作用是脱去字符串的引号。

【使用int和float函数的缺点】

需要先判断字符串里的数据是整数还是小数。 函数可能会改变原有的数据类型。

我们今天来学一个函数,它不用考虑字符串里的数值是整数还是小数,也不会改变字符串里的数据类型。

2. eval函数

【eval百科解释】

eval函数用于将括号内的字符串视为语句并运行。

【功能】

官方定义eval函数的功能是:执行一个字符串表达式,并返回表达式的值。

【我的概括】

eval函数的功能就是脱去字符串的引号。

如果eval函数的参数是运算表达式,那输出该表达式的计算结果。 如果eval函数的参数仅仅是一个数值的字符串,那脱去字符串的引号,直接输出该数值。整数就输出整数,浮点数就输出浮点数。

【重点分析】

上面的语句我们可以提取到3个关键信息:

字符串 表达式 返回一个值

大家学习的时候注意找到重点哦!!!

3. eval函数的语法eval(expression, globals=None, locals= None)

expression [ɪkˈspreʃn]:表达。

globals:全局变量。

locals ['ləʊklz]:局部变量。

none[nʌn]:没有。

【eval( )函数由3部分组成】

1.函数名:eval

2.英文圆括号:( )

3.参数

参数expression:字符串类型的表达式。

参数globals:可选参数,变量作用域,全局命名空间,如果指定该参数,必须是一个字典对象。

参数locals:可选参数,变量作用域,局部命名空间,如果指定该参数,可以是任何映射对象。

【返回值】

返回表达式的计算结果,或字符串里的数值。

【碎碎念】

学到这里大家对Python的函数应该有一个系统的理解。

Python函数通常都具有下面几个特征:

函数名。 函数名后都需要紧跟一对英文圆括号( )。 函数的参数通常都有必须参数和可选参数2种。 部分参数通常都有默认值。 函数通常都有返回,有时候返回的是值,有时候返回的是对象。

大家看我的笔记会发现我不是单纯的再讲一个知识点。

我会贯穿Python的语法结构以及编写的逻辑思维。

大家刚开始学习学的是单纯知识点,后期再学习应该就把重点放在语法结构和逻辑思维上。

学一个知识点不是目的,我们要学的是一种能够自学的能力。

Python中的函数、模块成百上千,且不断更新,我写10年都不一定写得完。

但大家基础入门后,可以花一点点时间在语法结构和逻辑思维上,这样后期你会有质的提升。

当你看完源代码你就能懂这个函数、模块要实现的功能,这就是学习能力。

例如,今天你接触一个新的函数,你就应该想到他会有几个参数,哪些参数是必须的,哪些参数是可选的,函数返回的是什么。

4. 返回字符串表达式的计算结果

【表达式的结果为整数】

print("1+2+3+4+5")

【终端输出】

1+2+3+4+5

print函数括号中的内容有引号,有引号则数据类型为字符串。

print会原样输出字符串,因此运行程序后输出的结果为"1+2+3+4+5"。

print(eval("1+2+3+4+5"))

【终端输出】

15

加了eval函数,则输出的就是一个值。

"1+2+3+4+5"就是eval函数的字符串表达式。即:expression="1+2+3+4+5"。

我们在print函数中学过,字符串是不能进行运算的,字符串只能进行拼接。

但有eval函数则不一样。

eval函数会识别括号中的内容为一个字符串表达式,会返回该表达式的计算结果。

因此输出的结果为15。

print(type(eval("1+2+3+4+5")))

【终端输出】

class 数据表示数据类型。

int表示数据类型为整数。

如果字符串表达式的计算结果为整数,则eval函数返回的数据类型为整数。

【表达式的结果为浮点数】

print(eval("1.1+2.1+3.3+4.1+5.1")) print(type(eval("1.1+2.1+3.3+4.1+5.1")))

【终端输出】

15.7

如果字符串表达式的计算结果为浮点数,则eval函数返回的数据类型为浮点数。

【表达式为除法】

print(eval("1000/2"))

【终端输出】

500.0

"1000/2"是eval函数的字符串表达式。即:expression="1000/2"。

【表达式为乘法】

print(eval("50*2"))

【终端输出】

100

"50*2"是eval函数的字符串表达式。即:expression="50*2"。

【实操练习】

用input函数从终端输入一个表达:10*10 输出这个两个数的乘积。 x = input ("请输入一个表达式:") print(eval(x))

【终端输出】

100

注意expression参数的值要是字符串数据类型。

input函数接收的数据类型刚好就是字符串类型。

5. eval实现数据类型之间的转换a = "520" print("a的数据类型:", type(a)) print(eval(a)) print("eval后a的数据类型:", type(eval(a)))

【终端输出】

a的数据类型: 520 eval后a的数据类型:

a的数据类型为字符串。

字符串里的数据类型为整数。

eval函数可以将a的引号去掉,将其转换为整数。

a = "3.14" print("a的数据类型:", type(a)) print(eval(a)) print("eval后a的数据类型:", type(eval(a)))

【终端输出】

a的数据类型: 3.14 eval后a的数据类型:

a的数据类型为字符串。

字符串里的数据类型为浮点数。

eval函数将a的引号去掉,将其转换为浮点数。

a = "[2, 4, 6, 8]" print("a的数据类型:", type(a)) print(eval(a)) print("eval后a的数据类型:", type(eval(a)))

【终端输出】

a的数据类型: [2, 4, 6, 8] eval后a的数据类型:

a的数据类型为字符串。

字符串里的数据类型为列表。

eval函数将a的引号去掉,将其转换为列表。

a = "(2, 4, 6, 8)" print("a的数据类型:", type(a)) print(eval(a)) print("eval后a的数据类型:", type(eval(a)))

【终端输出】

a的数据类型: (2, 4, 6, 8) eval后a的数据类型:

a的数据类型为字符串。

字符串里的数据类型为元组。

eval函数将a的引号去掉,将其转换为元组。

通过上面的输出结果,我们可以发现eval的作用其实就是脱去字符串的引号,保留字符串里的内容的数据。

6. 知识总结

【功能】eval函数用于执行一个字符串表达式,并返回表达式的值。

【函数语法】

eval(expression, globals=None, locals= None)

参数expression:字符串类型表达式。

参数globals:可选参数,变量作用域,全局命名空间,如果指定该参数,必须是一个字典对象。

参数locals:可选参数,变量作用于,局部命名空间,如果指定该参数,可以是任何映射对象。

【代码总结】

print("返回值:", eval("1.1+2.1+3.3+4.1+5.1")) print("返回的数据类型:",type(eval("1.1+2.1+3.3+4.1+5.1"))) a = "520" print("返回值:", eval(a)) print("返回的数据类型:",type(eval(a))) a = "3.14" print("返回值:",eval(a)) print("返回的数据类型:",type(eval(a))) a = "[2, 4, 6, 8]" print("返回值:",eval(a)) print("返回的数据类型:",type(eval(a))) a = "(2, 4, 6, 8)" print("返回值:",eval(a)) print("返回的数据类型:",type(eval(a)))

【终端输出】

返回值: 15.7 返回的数据类型: 返回值: 520 返回的数据类型: 返回值: 3.14 返回的数据类型: 返回值: [2, 4, 6, 8] 返回的数据类型: 返回值: (2, 4, 6, 8) 返回的数据类型:

【备注】 剩下的2个参数以后用到的时候再介绍。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3