Python学习

三种模式
local

以下两种不推荐使用 global 范围管 全局会影响以前的python版本

shell 会话临时 不持久 断开重连 失效
global

虚拟化环境
pyenv virt(tab) 版本

pip freeze > requirement 导出 pip list 里安装的包和版本

pip install -r ../test/requirement 可在其他环境里导入列表对应的包和版本 可保证环境一致

字节码 中间代码 == 一种虚拟机能认识的代码

python 虚拟机是什么东西 (解释型语言)
你可以认为它有一套虚拟的CPU,当然得把你写的中间代码转换成真正CPU能够认识的机器指令,但这个东西交给Python虚拟机去做

C,C++是编译型语言

强类型 和弱类型的区别

强类型 不同类型之间的操作 必须先转换为统一类型 举例 print ('a' + 1)
弱类型 不同类型之间可以操作,自动隐式转换 JavScript 中 console.log(1 + 'a')

动态语言 有称为 动态编译型语言
有个过程 编译成中间代码(字节码) 在解释器中转换成本地CPU能够识别的机器指令(代码一定是在本地跑的) 二进制

1/0 除零异常

############## 运算符 ##################
& (位与) |(位或) ~(取反,按位取反) ^异或 <<(左移) >> (右移)

针对系统硬盘上存储的位进行操作(实际操作是以字节为单位),位运算在计算过程中,每个位的操作返回的结果都是1或者0

位运算符:&,|,~,^,>>,<<

&:按位与,表示两个位都为1时,则返回1,否则返回0

|:按位或,表示两个有一个为1的时候,返回1,否则返回0

~:按位非,如果本身为0,则返回1,如果本身为1,则返回0

^:按位异或,如果两位不相同时,则返回1,如果两位相同则返回0

:按位右移,将整个字节向右移一位,左边空出来的使用0补充

<<:按位左移,将整个字节向左移一位,右边空出来的使用0补充

为什么 bin(12) 的结果为 0b1100 0b表上是二进制

简单到不行,害的我找了好久

puts 255 #10进制
puts 0xff #16进制
puts 0d255 #10进制
puts 0377 #8进制
puts 0b11111111 #二进制

-1 的 源码为何是 1000 0001 (8位二进制数表示的话就是1000 0001,前边第一个1就是表示的符号位为负)

补码:
正数的补码与源码相同;负数的补码符号位不变其余按位取反后+1
即:
-1
1000 0001
1111 1110 +1 ---> 1111 1111

由于负数在计算机中使用补码存储 ,故 5-1 即 5 + (-1)

源码		补码

5 0000 0101 0000 0101

  •   	    +
    

-1 1000 0001 1111 1111 (溢出位舍弃)
|
V
0000 0100 即等于 4

^异或(同为0,异为1)
举例 10^9 = z = 10 ⊕ 9

10 0000 1010
9 0000 1001
0011 = 3

那么 10^-9
10 0000 1010
-9 1000 1001
0011 = -3

comments powered by Disqus