一, 算术运算符
- 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
源文件模式下的大整数对象池 (同一个内存块定义大整数):
来源: http://www.bubuko.com/infodetail-3344381.html