将字符串转换成能计算的数据,我们学过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函数的缺点】
需要先判断字符串里的数据是整数还是小数。
函数可能会改变原有的数据类型。
我们今天来学一个函数,它不用考虑字符串里的数值是整数还是小数,也不会改变字符串里的数据类型。
【eval百科解释】
eval函数用于将括号内的字符串视为语句并运行。
【功能】
官方定义eval函数的功能是:执行一个字符串表达式,并返回表达式的值。
【我的概括】
eval函数的功能就是脱去字符串的引号。
如果eval函数的参数是运算表达式,那输出该表达式的计算结果。
如果eval函数的参数仅仅是一个数值的字符串,那脱去字符串的引号,直接输出该数值。整数就输出整数,浮点数就输出浮点数。
【重点分析】
上面的语句我们可以提取到3个关键信息:
字符串
表达式
返回一个值
大家学习的时候注意找到重点哦!!!
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年都不一定写得完。
但大家基础入门后,可以花一点点时间在语法结构和逻辑思维上,这样后期你会有质的提升。
当你看完源代码你就能懂这个函数、模块要实现的功能,这就是学习能力。
例如,今天你接触一个新的函数,你就应该想到他会有几个参数,哪些参数是必须的,哪些参数是可选的,函数返回的是什么。
【表达式的结果为整数】
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函数接收的数据类型刚好就是字符串类型。
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的作用其实就是脱去字符串的引号,保留字符串里的内容的数据。
【功能】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个参数以后用到的时候再介绍。