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

posted @ 2019-10-21 19:51  一个老宅男  阅读(1001)  评论(0编辑  收藏  举报