1.4 运算符
1.4.1 算术运算符
由于python类型灵活,所有它的运算符的含义与java和C都有所不同:
- python中的加、减、乘、取整、取余,与java和C是一样的;(字符串同样可以使用+运算)
- python中的
/
表示除法,当被除数与除数为整数时是可以算出小数商的;而//
表示整除。这与java和C中不同。 - python中有
**
作为次方运算符。这在java和C中是没有的。 - python中同样支持+=,-=,*=,/=等组合赋值运算。
python赋值运算内存使用原理:
name='admin'
name1=name
name2='admin'
print(id(name),name)
print(id(name1),name1)
print(id(name2),name2)
# id函数表示返回对象的内存地址,这个地址是一串数字
# 在name变量中正常保存的是admin的存储地址,因此运行可以发现name、name1的地址是一样的。
# python中的一个变量是可以复用的,即如name、name1与name2是在内存中的同一个位置,无论有几个变量都可以从一个位置取值,这样便节省了内存空间。
# 因此赋值的作用,就是建立或改变内存的指向。
# 不止对于字符串类型,数值类型也是这样
n1=3
n2=n1
n3=3
print(id(n1),id(n2),id(n3)) # 输出结果为140725846185696 140725846185696 140725846185696
n3=4 # 如果令n3改变值则id发生变化
print(id(n1),id(n2),id(n3)) # 输出结果为140725846185696 140725846185696 140725846185728
# 如果修改的是n1或n2,也是只有相应变量的id会发生变化。由此可以得出结论:python是将值保存在了内存中,一个值占一个空间,而=的作用是在值的内存地址与变量之间添加关联。因此,一旦使用=修改了变量的值,其id也发生变化。
1.4.2 关系运算符
python中的关系运算符有:==、!=、>=、<=、<、>、is、is not等。
python中验证字符串是否一致,也可以使用关系运算符:
n1='hello'
n2='hello'
result=n1==n2
print('n1==n2',result)
is关系运算符,可以用来比较两个对象的内存地址:
# 当比较的两个变量的值是两个较小整数(python对小整数的定义是-5~256)时,内存地址是相同的
age=20
age1=20
print(id(age))
print(id(age1))
print(age is age1)
# 当比较的两个变量的值是两个较大整数时,要分情况:在交互式运行时(即像在IDEL中那样),id是不同的;在文件式运行中(即在像pycharm中写代码再运行那样),id是相同的
money=2000000
salary=2000000
print(id(money))
print(id(salary))
print(money is salary)
1.4.3 逻辑(布尔)运算符
python中的逻辑运算符有:and、or、not。这里的逻辑运算符并没有使用符号表示,这一点与java和C是不同的。
python中逻辑运算符返回的结果为True或False。
逻辑运算符使用示例如下:
n1=8
n2=5
n3=3
result=n1>=(n2+n3) and n1>n2
result1=n1>=(n2+n3) or n1>n2
flag=Flase
result2=not flag
print(result,result1,result2)
1.4.4 位运算与进制转换
(1)位运算
python中的位运算符号有:&(按位与),|(按位或),^(按位异或),!(按位取反),<<(左移),>>(右移)。这与C语言和java中是相同的。
位运算举例:
# 按位或
print(3 & 2)
'''
将3和2转化为二进制位,然后对应的位进行&运算,以1为True,以0为False,运算后输出二进制结果对应的十进制数字
0000 0011
& 0000 0010
------------
0000 0010
对应的十进制数字为2
'''
# |及^的操作与&是相同的思路
# ^异或,表示上下两对齐的位相同为0不同为1,然后输出运算后的二进制对应的十进制
#左移:将数字转化为二进制位,从左边去掉要移动的位数,在右边以0补齐
#规律是十进制数字与原来相比扩大了2的n次方倍,n为规定的移动位数
print(2<<1) #2向左移1位
#右移:将数字转化为二进制位,从右边去掉要移动的位数,在左边补上与原来符号位相同的数字
#规律是十进制数字与原来相比剩上了1/2的n次方倍并取整,n为规定的移动位数
print(2>>1) #2向右移1位
(2)进制转换
python中进制转换的例子如下:
#二进制转换:将数字转为二进制的函数是bin()
a=3
print(bin(a))
b=0b101 #0b表示后面的数字是二进制,0o表示八进制的符号后面数字是八进制
print(bin(b))
#十进制转换:将数字转换为十进制的函数是int()
c=0b10111
print(int(b))
#负数的二进制
d=-2
print(bin(d))
#输出二进制位:python中二进制函数已封装好输出的是二进制的符号表示,但计算机的的二进制位默认是以8位二进制数字表示的,最高位表示符号正为0负为1
#八进制转二进制:将八进制数的每一位上的数字用三位二进制数表示然后拼接即可
#十六进制转二进制:将十六进制数的每一位上的数字用四位二进制数表示然后拼接即可