3.Python常用逻辑运算符

 

一、算术运算符

In [1]:
a = 9
b = 2
In [2]:
#乘
result = a * b
print('{}*{}={}'.format(a, b, result))
 
9*2=18
In [3]:
#除
result = a / b
print('{}/{}={}'.format(a, b, result))
 
9/2=4.5
In [4]:
#幂
result = a ** b
print('{}**{}={}'.format(a, b, result))
 
9**2=81
In [5]:
#整除
result = a // b
print('{}//{}={}'.format(a, b, result))
 
9//2=4
In [6]:
#取模
result = a % b
print('{}%{}={}'.format(a, b, result))
 
9%2=1
 

二、逻辑运算

 

2.1 数值逻辑

In [7]:
n1 = int(input('请输入第一个数'))
n2 = int(input('请输入第二个数'))
 
请输入第一个数100
请输入第二个数200
In [8]:
result = n1 > n2
print('%d > %d is %s' %(n1, n2, result))
 
100 > 200 is False
In [9]:
result = n1 < n2
print('%d < %d is %s' %(n1, n2, result))
 
100 < 200 is True
In [10]:
result = n1 == n2
print('%d == %d is %s' %(n1, n2, result))
 
100 == 200 is False
In [11]:
result = n1 != n2
print('%d != %d is %s' %(n1, n2, result))
 
100 != 200 is True
 

2.2 字符串逻辑

In [12]:
UserName_Check = 'xiaoming'
In [13]:
UserName = input('请输入姓名:')  #输入错误用户名
 
请输入姓名:xiaoqiang
In [14]:
result = UserName_Check == UserName
print('输入匹配是:%s' %(result))
 
输入匹配是:False
In [15]:
UserName = input('请重新输入姓名:') #输入正确用户名
 
请重新输入姓名:xiaoming
In [16]:
result = UserName_Check == UserName
print('输入匹配是:%s' %(result))
 
输入匹配是:True
 

2.3 对象的比较

In [17]:
Num1 = 100
Num2 = 100
print(id(Num1), Num1)
print(id(Num2), Num2)
print(Num1 is Num2)
 
140719116754848 100
140719116754848 100
True
 

2.4 and or not

 

and 逻辑与

or 逻辑或

not 逻辑非

 

2.5 注意:python中存在小整数对象池和大整数对象池问题。

1.小整数对象池

整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。

2.大整数对象池

终端是每次执行一次,每次的大整数都重新创建,而在python源文件中,每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象

而在终端交互模式中,即使执行相同的终端命令,不同交互模式下的每个大整数变量分别有自己的代码块内存,申请存储大整数的内存空间也不同,所以不相等

详细实验如下:

 

终端模式下的大整数对象池(不同的内存块定义大整数):

In [18]:
Num1 = 10000
In [19]:
Num2 = 10000
In [20]:
print('Num1:', Num1, id(Num1))
print('Num2:', Num2, id(Num2))
print('Num1 is Num2: ', (Num1 is Num2))
 
Num1: 10000 2243219552560
Num2: 10000 2243219553296
Num1 is Num2:  False
 

源文件模式下的大整数对象池(同一个内存块定义大整数):

 

 

 

posted on 2019-12-22 13:55  King-Penguin  阅读(540)  评论(0编辑  收藏  举报

导航