python语言基础-1语法基础-1.4 运算符

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

#八进制转二进制:将八进制数的每一位上的数字用三位二进制数表示然后拼接即可

#十六进制转二进制:将十六进制数的每一位上的数字用四位二进制数表示然后拼接即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值