这真的就是我们小学学过的运算符

“上课”

“起立”

“老师好!”

“同学们好,请坐,请翻到12页,今天我们来讲讲运算符。。。”

《这真的就是我们小学学过的运算符》

恩恩,一看到这个题目就忍不住触景生情了一把,下面我们来过一下python3中的运算符。

一、算术运算符

算术运算符最简单的就是加减乘除求摸,但我今天不会将所有运算符都一一列举,只看几个比较特殊的运算符。

  python3中的除法比较特殊,下面以一个例子来进行说明一下。

In [1]:

a = 20

b = 1.5

c = 5

a / b,a // b,a / c,round(a/b,4)

Out[1]:

(13.333333333333334, 13.0, 4, 13.3333)

“/”是简单的除法,而“//”则是取整,但并不会四舍五入,如果需要指定小数位数,可使用round()函数,该函数会进行四舍五入。

“**” 两颗星是幂运算符,例如:

In [2]:

2**5

Out[2]:

32

二、关系运算符

关系运算符无非大于(>)小于(<)等于(==)及延伸出来的大于等于(>=)小于等于(<=)不等(!=)

In [3]:

a = 12

b = 7

c = 7

a > b,a < b,a == b,b <= c,b >= c,b != c

Out[3]:

(True, False, False, True, True, False)

三、赋值运算符

    最常见和常用的就是 “=”,还有一些不常见的赋值运算符,即根据算术运算符和”=”组合延伸出来的,如:+=,-=,*=,/=,//=,%=,**=,下面 一 一 来看一下。

>>> a = 12

>>> b = 3

>>> b += a

>>> b

15

>>> b  –=  a  #这个减号‘-’有点诡异

>>> b

3

>>> b *= a

>>> b

36

>>> b **= 2

>>> b

1296

>>> b /= 36

>>> b

36.0

>>> b //= 7

>>> b

5.0

>>> b %= 3

>>> b

2.0

四、逻辑 / 位运算符

python里的逻辑运算符其实就是and(且) 、or(或)、 not(非),如果将and表示成“&&”就不好了,没有这种表示方法,逻辑运算符比较简单,其余两个也是,只有这种表示方法。

>>> a = ‘a’

>>> b = ‘b’

>>> a == ‘a’ and b==’c’   #相当于 True and False

False

>>> a == ‘a’ or b==’c’  #相当于True or False

True

>>> not (a == ‘a’)  #相当于 not True

False

>>> not (b == ‘a’)   #相当于 not False

True

python中有&,|,~,^等位运算符,表示位与、位或、位取反、位异或,此外还有<<(左移)和>>(右移)。

>>> i = 30                           #下面的位运算都基于这两个数

>>> j = 10

>>> format(i,’b’)                   #这是i = 30 的二进制表示

‘11110’

>>> format(j,’b’)                   #这是j = 10 的二进制表示

‘1010’

>>> i & j        #从最右边的位开始计算,遵循1 & 1=1,1 & 0 =0,0 & 0 =0 的计算规则;j左边不够补0

10

>>> i | j       #遵循 1 |1=1,1 | 0 =1,0 | 0 =0,从右往左计算

30

>>> i ^ j    #遵循 1^1=0,1 ^0 =1,0 ^ 0 =0;即同为0,异为1

20

>>> format(20,’b’)     #从异或结果的二进制就可以看得出来

‘10100’

>>> i << 1        #左移一位相当于乘以2

60

>>> i << 2     #左移两位相当于乘以4,即2的2次方

120

>>> i       #但 i 还是原来的值

30

>>>  i >> 1    #相应的,右移一位相当于除以2,但不尽然。

15

>>>  i >> 2    #像这种情况,不是2的倍数,似乎看不懂,看二进制位就明白了

7

>>>  i >> 3

3

>>> format(7,’b’)    #这是7的二进制

‘111’

>>> format(3,’b’)    #这是3的二进制

’11’

>>> format(15,’b’)    #这是15的二进制,这下就很好明白啦。

‘1111’

五、成员 / 身份运算符

所谓成员运算符,其实就是一种表达式而已,嗯,我是这么理解的。在可迭代对象中都可以使用in 或者 not in 来判断某一变量或对象(毕竟python中一切皆对象)是否存在其中。下面以一个字符串来说明一下。

>>> str = ‘I love python’

>>> ‘I’ in str

True

>>> ‘love’ in str

True

>>> ‘you’ in str      #充分说明,I love ‘python’ more than ‘you’,hahah.

False

>>> ‘python’ not in str

False

那什么叫做身份运算符呢?

python中用 is (也叫做同一性运算符)来判断某两对象的标识符(可以理解为变量)是否指向同一对象(可理解为内存单元,不是类型)。

>>> a = 10

>>> b = 90

>>> c = 10        #a,b,c都是整型变量,其中a与c的值相等

>>> a is b

False

>>> a is not b

True

>>> a is c     

True

>>> id(a)

1428095760

>>> id(c)

1428095760

>>> id(a) == id(c)    #这里a和c的id相同

True

>>> id(b)

1428098320

>>> id(a) == id(b)  

False

需要特别说明一下,可能这里有误解,以为只要两个变量的值相等就有相同的身份标识,即id,其实不是的,如:

>>> a = [1,2,3]

>>> b = [1,2,3]

>>> a is b

False

>>> a == b    #两变量的值是相等的

True

>>> id(a)     

39732552

>>> id(b)     #所以a和b的id不一样,即使值相等。所以is是否为True是以身份标识即id来判断的

49467080

    以上简单介绍了python中三种(值,身份唯一性标识,类型)对象间判断的两种方式,即值判断使用比较运算符,身份判断使用is/not is,下面简单介绍下类型的判断方法(使用isinstance()

>>> a = ‘a’

>>> isinstance(a,int)

False

>>> isinstance(a,(float,int))       #类型还可以是一个元组

False

>>> isinstance(a,(float,int,type(‘c’)))     #类型元组中有str类型,所以为True

True

    原文作者:laygin
    原文地址: https://www.jianshu.com/p/9f78dcbaffab
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞