前言
在上一节中我们介绍了各种数据类型之间的转换,时间紧张小编我忘了介绍eval()函数的使用,所以在本节课小编便写一下eval()函数的用法。此外,本文主要将主要介绍各类运算符以及相应的使用方法。
eval()函数
eval()的函数是Python中的内置函数,定义为:eval(source,globals = None,locals = None)。官方文档中的解释是,将字符串str当成有效的表达式来求值并返回计算结果。也就是用于去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符串。常用语法格式为:
变量=eval(字符串)
同时,eval()函数也可以起到改变数据类型的作用。举个简单的示例:
a = '2.12+2'
print(type(a))# 输出字符型
b =eval(a)# 使用eval函数将a这个字符串左右的引号去掉,并执行加法运算
print(b,type(b))# 输出 4.12,float型
示例中可以发现,字符串 ‘2.12+2’ 在经过eval()函数的处理后输出为4.12,即由字符型变成了浮点型。同时我们要注意,在使用print()函数直接输出字母与汉字时需使用字符型,例如一个字符串经过eval()函数处理后便不能被print()函数输出。示例如下:
c ='hello'
print(c)# 输出hello
print(eval('c')# 输出hello
print(eval('hello'))# 运行出错,当使用eval函数后代码变成print(hello),
# 此时hello相当于一个未赋值的变量,不再是字符型,故程序无法运行
在平时使用时,因eval()函数可以改变数据类型这一特点,所以也常与input()输入函数一起使用,示例如下:
age =eval(input('请输入您的年龄:'))#正常使用input()函数只能获取字符型结果,使用eval将字符类型转换为int型,
#相当于int(age)
print(age,type(age))# 输出1,int型
height =eval(input('请输入您的身高:'))
print(height,type(height))# 输入180.3时输出180.3,float型
运算符
为了实现各种信息的处理,Pyhton中内置了各种运算符供大家使用,例如算数运算符、赋值运算符、比较运算符、逻辑运算符以及位运算符。
算术运算符
算数运算符应该是大家最为熟悉的,其中的加 ‘+’、减 ‘-’、乘 ‘*’、除 ‘/’。大家都早已了解便不再介绍,除了这四种运算符还有整除 ‘//’ 、取余 ‘%’ 、以及幂运算 ‘**’。
从名字中便可以看出,整除就是两个数相除,只保留整数部分。取余与整除有相同之处,取余是取出两数相除后的那个余数。示例如下:
print('整除',10//3)# 输出:整除 3
print('取余',10%3)# 输出: 取余 1
print('幂运算',2**3)# 输出:幂运算 8
赋值运算符
经过简单的学习我们已经清楚,单独一个等号 ‘=’其实就是一个赋值运算符,除此之外还有加赋值 ‘+=’ 、减赋值 ‘-=’ 、乘赋值 ‘*=’ 、除赋值 ‘/=’ 、整除赋值 ‘//=’ 、取余赋值 ‘%=’ 以及幂赋值 ‘**=’ 。听起来是不是很熟悉,对,赋值运算符与算术运算符其实有着很大关联。
例如 c+=a 就等于 c=c+a , c-=a 就等于 c=c-a 等等以此类推。示例如下:
x =10 #直接赋值,直接将10赋值给x
y =15
x+=y
print(x) #x=x+y,此时x为25
x-=y
print(x) #x=x-y,此时x为10
x*=y
print(x) #x=x*y,此时x为150
x/=y
print(x) #x=x/y,此时x为10.0,整数相除结果为浮点型
x%=y
print(x) #x=x%y,此时x为10.0
x//=3
print(x) #x=x//3,此时x为3.0
x**=2
print(x) #x=x**3,此时x为9.0
除了这些赋值运算符外,Python中还存在一些常用赋值方法。例如链式赋值以及系列解包赋值。示例如下:
a=b=c=100 #相当于a=100,b=100,c=100
print(a,b,c) #输出100 100 100
a,b=10,20 #相当于a=10,b=20
print(a,b) #输出10 20
a,b=b,a #交换a与b的值
print(a,b) #输出20 10
比较运算符
比较运算符根据名字可以知道就是关于两个数的比较,其实跟我们之前了解的也是大差不差的,例如等于,不等于,小于,大于,小于等于,大于等于。
同时需要注意一下,运算时两个数如果符合比较运算符要求,则返回True,反之返回False.。示例如下:
x =3
print('x大于2吗?',x>2) #True
print('x小于2吗?',x<2) #Flase
print('x等于2吗?',x==2) #Flase
print('x不等于2吗?',x!=2) #True
print('x大于等于2吗?',x>=2) #True
print('x小于等于2吗?',x<=2) #False
逻辑运算符
逻辑运算符只有三种,分别是逻辑与 ‘and’ 、逻辑或 ‘or’ 、逻辑非 ‘not’ 。主要表达式为:
- 表达式1 and 表达式2(从左到右)
- 表达式1or 表达式2(从左到右)
- not 表达式(从右到左)
在使用逻辑运算符时,我们要牢记表达式1与表达式2的不同对错情况下,各逻辑运算符的返回值情况,返回值只有True与False两种,具体情况用代码形式展示:
print(True and False) #False
print(True and True) #True
print(False and True) #False
print(False and False) #False
print(True or False) #True
print(True or True) #True
print(False or True) #True
print(False or False) #False
print(not True) #False
print(not False) #True
在使用时,由于它们的结合方向不同,使得原本一些无意义的运算也能展现出来,示例如下:
print(3<2 and 2/0) #原本2/0无意义,但因3<2本身已经False,
# 且从左到右,故未执行到2/0便直接得出结果False
print(3>2 or 2/0) #与上同理,True
整数除以零本无意义,但在逻辑运算符的使用下,代码并不会出错,大家在遇到做选择题时可要擦亮眼睛哦!
位运算符
按位运算符都是把数字看作二进制来进行计算的。主要由按位与 ‘&’ 、按位或 ‘|’ 、按位异或 ‘^’、按位取反 ‘~’ 、左移 ‘<<’ 、右移 ‘>>’ 等六种位运算符。
- ‘&’ ——按位与运算,针对两个数,将数字转化为二进制后,只有都为1才是1,否则为0
- ‘|’ ——按位或运算,针对两个数,将数字转化为二进制后,只要有1都为1,其余为0
- ‘^’ ——按位异或运算,针对两个数,将数字转化为二进制后,只要相同都为0,否则为1
- ‘~’ ——按位取反运算,只字针对一个数,将数字转化为二进制后,进行取反(整数都是以补码形式存在,正数的补码是本身,负数的补码是反码+1,我们需要先将补码转化为原码后,再利用二进制与十进制之间的变换求出结果)
- ‘<< ‘——左移运算符,针对一个数字,将数字化为二进制后,将其向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。
- ‘>>’ —— 右移运算符,针对一个数字,将数字化为二进制后,将其向右移动指定的位数,右边(低位端)溢出的位被丢弃,左边(高位端)的空位端,如果最高位是0(正数)左侧空位填0,如果最高位是1(负数),左侧空位填1。
具体示例代码如下:
#12 1100
#8 1000
#12 & 8 1000
print(12&8) #8
#12 | 8 1100
print(12|8) #12
#12 ^ 8 0100
print(12^8) #4
#12 0000_1100
#~12 1111_0011 首位为1,故为负数,先减1取其反码 1111_0010 ,
#再取其原码(符号位不变) 1000_1101 即-13
#首位为符号位,若首位为1,则代表这个二进制数为负数,若为0,则代表为正数
print(~12) #输出-13
#8 1000
#8<<1 1 0000
print(8<<1) #16,相当于8*2
#8>>1 0100
print(8>>1) #4,相当于8/2
print(-8>>2) #-2,相当于-8/2/2
结语
今天的内容就是这些了(写的时候手都写酸了-_-),但总归是整理出来了,今天又是元气满满的一天。如果小伙伴们有不清楚的地方可以评论区留言也可以私信我一起讨论,如果有错的地方也希望大家能够大胆的为我☞出。那么今天就再见啦!!!
今天的文章python eval函数的作用_python eval函数的作用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83269.html