python(五)——运算符,小整数对象池

 

1.成员运算符,判断某个东西是否在某个东西里包含:in,not in

name = "abcd"
if "ac" in name:
    print("ok")
else:
    print("error")# 结果error

if "a" not in name:
    print("ok")
else:
    print("error")# 结果error

2.布尔值 True,False

==  >  <  >=  <=  !=(不等于)  <>(不等于)  not(非)

v = not False   # True

name = 'abcd'
v = 'c' in name
print(v) # True
if v:
    print('1') # 1
else:
    print('2')

 

3.逻辑运算

  and,or,not

  user == 'alex' and (pwd == '123' or 1 == 1)

 

  先计算口号里面的

  执行顺序:

      从前到后

      结果

        True  OR  ==>  True

        True  AND  ==>  继续走

        False  OR  ==>  继续走

        False  AND  ==>  False

 

4.赋值运算

  +=,-=,/=,//=,*=,%=,**

a = 3
b = 3
c = 8
print(a ** b) # 27 次方
print(a * b)    # 9 
print(c // a)    # 整除 2

 print('#' * 50)  50个前面字符串部分

 

分类:

  结果是值:

    算术运算

    赋值运算

  结果是布尔值:

    比较运算

    逻辑运算

    成员运算

 

is, is not

# is 用户对象比较 id()
sal = 5000;
sum = 5000;
print(sal is sum) # True, 他们id相同

 

5,位运算符

'''
位运算符
&    与
|    或
!    非
^    异或
<<    左移
>>    右移
'''
num = 8
print(bin(num)) # 0b1000, 0b表示二进制
binNum = 0b1111
print(int(binNum));    # 15

oNum = 0o5432 # 0o开头表示八进制
print(int(oNum))    # 2842

print(3 & 2)    # 2

 

 

https://www.cnblogs.com/fmgao-technology/p/9261794.html

1. 小整数对象池

整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。

Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,

所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。

复制代码
In [1]: a=-5

In [2]: b=-5

In [3]: a is b
Out[3]: True

In [4]: a=256

In [5]: b=256

In [6]: a is b
Out[6]: True

In [7]: a=1000

In [8]: b=1000

In [9]: a is b
Out[9]: False
复制代码
intern机制处理空格一个单词的复用机会大,所以创建一次,有空格创建多次,但是字符串长度大于20,就不是创建一次了。
复制代码
In [13]: a="abc"

In [14]: b="abc"

In [15]: a is b
Out[15]: True

In [16]: a="helloworld"

In [17]: b="helloworld"

In [18]: a is b
Out[18]: True

In [19]: a="hello world"

In [20]: b="hello world"

In [21]: a is b
Out[21]: False
复制代码

 

复制代码
s1 = "abcd"
s2 = "abcd"
print(s1 is s2)

s1 = "a" * 20
s2 = "a" * 20
print(s1 is s2)

s1 = "a" * 21
s2 = "a" * 21
print(s1 is s2)

s1 = "ab" * 10
s2 = "ab" * 10
print(s1 is s2)

s1 = "ab" * 11
s2 = "ab" * 11
print(s1 is s2)
# True
# True
# False
# True
# False
复制代码

 

2.大整数对象池。说明:终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以

 这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。c1 和d1 处于一个代码块,而c1.b和c2.b分别有自己的代码块,所以不相等。

C1.b is C2.b
复制代码
In [22]: a=1000

In [23]: b=1000

In [24]: a is b
Out[24]: False

In [25]: a=-1888

In [26]: b=-1888

In [27]: a is b
Out[27]: False

In [28]: 
复制代码
复制代码
c1 = 1000
d1 = 1000
print(c1 is d1) # True

class C1(object): a = 100 b = 100 c = 1000 d = 1000 class C2(object): a = 100 b = 1000 print(C1.a is C1.b) # True print(C1.a is C2.a) # True print(C1.c is C1.d) # True print(C1.b is C2.b) # False
复制代码

 

posted @ 2019-02-03 16:16  狂奔~  阅读(422)  评论(0编辑  收藏  举报