Python学习--day 05
学习视频链接python 900集(2019版)
024.练习英雄联盟
(这个标题是个噱头,实际上就是使用input和print打印几个字而已。可以理解为一节习题课+作业讲解课)
025.赋值运算符及内存分析
- 运算符的种类:赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符
- 赋值运算符:
id()
函数:返回内存地址
项目 | 含义 |
---|---|
= | 取出后面的内容赋值给前面 |
== | 表示相等,是关系运算符,注意区分 |
+= | 左加右赋给左 |
-+ | 左减右赋给左 |
*= | 左乘右赋给左 |
/= | 左除右赋给左 |
字符串也可以使用+=,但不支持-=,例如:
a = 'abc'
a += 'ff'
print(a)
# 结果输出为:abcff
- 内存分析
name = ‘admin’
name1 = name
name中存的是‘admin’字符串在内存中的地址,同时name1存的也是‘admin’的地址,id(name) = id(name1)
用这种方式可以节约内存资源。
026.算术运算符
- 基本的算术运算符
数学上的“+、-、*、/” - 扩展的算术运算符
**:代表指数
//:代表除后取整数
%:求余数
a = 8
b = 3
result = a**b # result是512=8*8*8
a = 9
b = 2
result = a//b # result是4
027.回顾
复习内容(可以跳过)
自己对format的记忆比较少,以前没用过
print('-' * 50)
数字乘以字符串可以得到一连串的某字符串
凡是从键盘使用input的都是字符串类型
028.关系运算符
- 符号及其含义
符号 | 含义 |
---|---|
== | 数字之间的比较 |
!= | 不相等 |
< | 小于 |
> | 大于 |
>= | 大于等于 |
<= | 小于等于 |
is | 对象地址的比较 |
is not | 对象地址的比较 |
- 在sublime快速注释:Ctrl + ?
- python基础(面试常用)
在普通py文件中运行代码:
money = 20000
salary = 20000
print(id(money))
print(id(salary))
print(money is salary)
# 得到如下运行结果:
# 6399088
# 6399088 相同
# True
在交互式下运行代码
>>>money = 20000
>>>id(money)
33465456
>>>salary = 20000
>>>id(salary)
39742160 #与上面不同
>>>money is salary
False
>>>age = 8
>>>age1 = 8
>>>id(age)
1571253488
>>>id(age1)
1571253488 #与上面相同
- 为什么会出现相同或不同的结果?
交互式:所见即所得。python为了优化速度,设立了小整数对象池,避免为整数频繁申请和销毁内存空间,这些整数对象是被提前建立好的,不会被垃圾回收,范围是-5~256),因此对于小整数来说,id是一样的,而交互式下声明的大整数,每次大整数都是重新创建,而在sublime和pycharm中,大整数都是统一创建的。
文件式:将全部的文件内容传递给解释器,开辟的空间是整体式的,开辟的“20000”空间是一样的。
029.逻辑运算符
逻辑运算符:and、or、not
逻辑运算符的运算结果也是返回True或Falue
以及一些真值表
030.二进制+八进制+十进制
- 二进制
bin(obj)
函数,将变量显示为二进制数,0b代表二进制
老师还讲了二进制和十进制的转换规则,学过了不写了哈哈 - 十进制
int(dbj)
函数,将变量显示为十进制数。 - 8个二进制位构成一个字节byte
- 负数转变为二进制的步骤(计算机组成原理学过但是太久了,以-8)
- 先写正8:0000 1000
- 取反:1111 0111
- 最后位数加1:1111 1000
- 八进制的标志:0o
c = 0o6430
print(int(c))
- 二进制与八进制的特殊转换方式
(逐个展开) - 十六进制(内存、HTML中常用)
0x是十六进制的标志
HTML中:FFFFFF(每两位代表红绿蓝三原色,F代表满,0代表无,此处代表黑色) - 取反
print(~5)
浪线~表示取反
031.位运算 + 032.位运算
该部分在以后的代码书写中很少遇到,就是在面试的时候很有用
位运算的基本符号:&、|、!、^、<<、>>
print(3 & 2)
# 0000 0011
# 0000 0010
#&---------(相当于和)
# 0000 0010
print(3 | 2)
# 0000 0011
# 0000 0010
#|---------(相当于或)
# 0000 0011
- 异或^_相同的是0,不同的是1
3 0000 0011
5 0000 0101
——————
0000 0110 == 6 - 左移<<、右移>>
print(2<<1)
===4
print(2>>1)
===1
左移可以理解为乘以2的几次方,右移可以理解为除以2的几次方
这个地方我隐约记得还挺多细节的,比如负数的右移左移什么的,当初是学明白了,现在又忘了,再听一遍估计也是走马观花,老师后面也没有特别提及哈哈。