python(运算符)
一、运算符
1、算数运算符
(1)加(+)
注意:字符串与整数之间不能进行相加,需要通过str()或int()进行转换数据类型
-
整数与整数相加
>>> 1 + 1 2 >>>
- 浮点数与浮点数相加
>>> 2.0 + 2.0 4.0 >>> """二进制存储精度误差""" >>> 1.1 + 1.3 2.4000000000000004 >>>
- 整数与浮点数相加
>>> 2 + 2.0 4.0 >>>
- 字符串之间相加
>>> "Mr" + "." + "ZHENG" 'Mr.ZHENG' >>>
- 正数与负数相加
>>> 3 + (-1)
2
>>>
- 负数与负数相加
>>> -3 + -4 -7 >>>
(2)减(-)
注意:字符串与整数和字符串之间不能进行相减
- 整数与整数相减
>>> 10 - 5 5 >>>
- 负数与负数相减
>>> -3 - -4 1 >>>
- 正数与负数相减
>>> 5 - -2 7 >>>
- 浮点数与浮点数相减
>>> 5.0 - 2.0 3.0 >>> >>> 1.3 - 1.2 0.10000000000000009 >>>
- 整数与浮点数相减
>>> 3 - 1.3 1.7 >>>
(3)乘(*)
注意:字符串与字符串之间不能进行相乘
- 整数与整数相乘
>>> 3 * 2 6 >>>
- 浮点数与浮点数相乘
>>> 3.0 * 2.0 6.0 >>>
- 整数与浮点数相乘
>>> 4 * 1.0 4.0 >>>
- 正数与负数相乘
>>> 5 * (-2)
-10
>>>
- 负数与负数相乘
>>> -3 * -2 6 >>>
(4)除(/)
注意:字符串与字符串和整数之间不能进行相除
- python2.x 整数与整数相除
>>> 6 / 3 2 """整数相除,结果为整数""" >>> 7 / 3 2 >>>
- python3.x 整数与整数相除
>>> 1/2 """整数相除,结果为浮点数""" 0.5 >>>
- 浮点数与浮点数相除
>>> 6.2 / 2.0 3.1 >>>
- 整数与浮点数相除
>>> 6.0 /3 2.0 >>> >>> 7 / 3.0 2.3333333333333335 >>>
(5)求幂(**)
如x ** y --> 返回x的y次幂
>>> 3 ** 3 27 >>> >>> 10 ** 2 100 >>>
(6)取模 (%)--> 返回除法的余数
>>> 5 % 3 2 >>>
"""-a % b = b - (a % b)""" >>> -304 % 100 96 >>>
(7)整除法(//) -->向左取整
- 正数(正数向零取整)
>>> 9.0 // 2 4.0 >>> 9 // 2 4
- 负数(负数取偏小一位数)
>>> -9.0 // 2 -5.0 >>> -9 // 2 -5
2、赋值运算符
(1)= 简单的赋值运算符
- 变量的使用和命名
-
- 变量名只能包含字母、数字和下划线,可以以字母或下划线打头,但是不能以数字打头
- 变量不能包含空格
- 不要以 python 中的关键字(保留字符)作为变量
- 变量名应简短又具有描述性
- 变量区分大小写
- 慎用字母 l 和 o,因为可能会被人认为是 1 和 0
>>> a = 10
>>> a
10
name = "Alex Li" name2 = name print(name,name2) name = "Jack" print("What is the value of name2 now?")
a,b = 1,2 print(a) print(b) c,d = [3,4] print(c) print(d) ---> 1 ---> 2 ---> 3 ---> 4
- Python 内存回收机制如下:
- 变量相当于门牌号,当门牌没有了,即函数的引用都没有调用了,内存的数据就会被清除掉。Python 内有个定时器,定期的会刷新,如果发现内存中数据不被引用了,就会被回收,这个就是内存的回收机制。
(2)+= 加法赋值运算符
a += 1 --> a = a + 1
>>> a = 2
>>> a += 1
>>> a
3
>>>
(3)-= 减法赋值运算符
a -= 1 --> a = a - 1
(4)*= 乘法赋值运算符
a *= 1 --> a = a * 1
(5)/= 除法赋值运算符
a /= 2 --> a = a / 2
(6)%= 取模赋值运算符
a %= 3 --> a = a % 3
(7)**= 幂赋值运算符
c **= a 等效于 c = c ** a
(8)//= 取整除赋值运算符
c //= a 等效于 c = c // a
3、比较运算符(返回值为bool值)
(1)== 等于 - 比较对象是否相等
>>> "name" == "name" True >>> 1 == 1 True >>> 1 == 2 False >>>
(2)!= 不等于 - 比较两个对象是否不相等
>>> 1 != 2 True >>> 1 <> 1 False >>> "name" != "name1" True >>>
(3)>
>>> 2 > 1 True >>> 5 > 8 False >>> "zheng" > "zhen" True >>>
(4)<
>>> 1 < 2 True >>> 3 < 2 False >>> "zhen" < "zheng" True >>>
(5)>=
>>> 2 >= 2
True
>>>
(6)<=
>>> 2 <= 2
True
>>>
4、身份运算符(用于比较两个对象的存储单元--内存地址)
(1)is 是判断两个标识符是不是引用自一个内存地址
- x is y,类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
>>> 1 is 1 True >>> 1 is 2 False
(2)is not 是判断两个标识符是不是引用自不同对象
- x is not y, 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False
>>> 1 is not 1 False >>> 1 is not 2 True
5、逻辑运算符
假设a = 10,b = 20
(1)and 布尔"与" --> 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值
>>> a = 10 >>> b = 20 >>> a == 9 and b False >>> a and b 20
(2)or 布尔"或" --> 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值
>>> a = 10 >>> b = 20 >>> a or b 10 >>> a == -1 or b 20 >>> a == 1 or b 20 >>> a == 10 or b True
(3)not 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True
>>> a = 10 >>> not a False >>> not a == 1 True
6、成员运算符
(1)in 如果在指定的序列中找到值返回 True,否则返回 False
- 如下:a 在 b序列中则返回True,否则返回False
>>> a = 10 >>> b = [1,2,3] >>> a in b False >>> b = [1,2,3,10] >>> a in b True
(2)not in 如果在指定的序列中没有找到值返回 True,否则返回 False
- 如下:a 不在 b序列中则返回True,否则返回False
>>> a = 10 >>> b = [1,2,3] >>> a not in b True >>> b = [1,2,3,10] >>> a not in b False >>>
7、位运算符
- 按位运算符是把数字看作二进制来进行计算的;a = 60,b = 13 转换成二进制如下:
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
a = 60 => 0011 1100 b = 13 => 0000 1101 (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 |
a = 60 => 0011 1100 b = 13 => 0000 1101 (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 |
a = 60 => 0011 1100 b = 13 => 0000 1101 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 |
a = 60 => 0011 1100 (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 |
a = 60 => 0011 1100 a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 |
a = 60 => 0011 1100 a >> 2 输出结果 15 ,二进制解释: 0000 1111 |