import搜索路径
import sys
sys.path
sys.path.append("/home")
模块导入之后再修改
from imp import *
reload(test)
test.test()
循环导入的问题
程序设计上分层,写个主模块单独调用子模块
==和is区别
==内容相等 is看是否同一个 267之内的数字 is都是相同的
深拷贝和浅拷贝区别
浅拷贝:对一个对象的顶层拷贝,拷贝了引用,没拷贝内容 a=b
深拷贝:对一个对象的所有层次的拷贝(递归)deepcopy
元祖不可变,并不能拷贝,copy根据可变类型还是不可变类型,拷贝的功能也不一样
二进制原码、反码、补码、进制的转换
1.二进制数的正负
规则:把二进制数的最高位(最左边的哪位)
对于有符号数, 最⾼位被计算机系统规定为符号位(0为正,1为负)
对于⽆符号数, 最⾼位被计算机系统规定为数据位
数字在计算机中, 是⽤⼆进制补码的形式来保存的, 因此-1 +1需要按
照补码进⾏相加才是正确的结果
2、 原码、 反码、 补码
规则:
正数: 原码 = 反码 = 补码
负数: 反码 = 符号位不变, 其他位取反
补码 = 反码+1
1 的原码: 0000 0000 0000 0001
-1的原码: 1000 0000 0000 0001
-1的反码: 1111 1111 1111 1110
-1的补码: 1111 1111 1111 1111
2) 从补码转回原码
负数补码转换原码的规则:
原码 = 补码的符号位不变 -->数据位取反--> 尾+1
-1的补码:1111 1111 1111 1111
取反:1000 0000 0000 0000
-1的原码:1000 0000 0000 0001
原码 = 补码的符号位不变 -->数据位取反--> 尾+1
-1的补码:1111 1111 1111 1111
取反:1000 0000 0000 0000
-1的原码:1000 0000 0000 0001
4. 位运算
把⼀个数的各位整体向左移动⼀个位, 就变成原来的2倍
直接操作二进制,省内存,效率高
左移:x << n 左移 x 的所有⼆进制位向左移动n位,移出位删掉,移进的位补零
a. 左移1位相当于 乘以2
⽤途:快速计算⼀个数乘以2的n次⽅ (8<<3 等同于8*2^3)
b.左移可能会改变⼀个数的正负性
右移:各⼆进位全部右移n位,保持符号位不变
x >> n x的所有⼆进制位向右移动n位,移出的位删掉,移进的位补符号位 右移不会改
& 按位与 :全1才1否则0 :只有对应的两个⼆进位均为1时,结果位才为1,否则为0
| 按位或: 有1就1 只要对应的⼆个⼆进位有⼀个为1时,结果位就为1,否则为0
^ 按位异或:不同为1 当对应的⼆进位相异(不相同)时,结果为1,否则为0
~ 取反: ~9 = -10
私有化
只要有_开头都是私有的,from import *不能直接用,import模块可以用
__xx:双前置下划线,避免与⼦类中的属性命名冲突, ⽆法在外部直接访问(名字重整所以访问不到),通过如: _Class__object) 机制就可以访问private了
属性property
如何用property
class Test(object):
def __init__(self):
self.__num=100
def setNum(self,newNum):
self.__num=newNum
def getNum(self):
return self.__num
t = Test()
print(t.getNum())
t.setNum(50)
print(t.getNum())
class Test(object):
def __init__(self):
self.__num=100
def getNum(self):
return self.__num
def setNum(self,newNum):
self.__num=newNum
num = property(getNum,setNum)
t = Test()
t.num=200#给t.num赋值,调用了setNum()
print(t.num)#获取t.num的值,调永getNum()
#property作用:相当于把方法进行封装,对属性设置数据的时候更方便
#另外一种方式
class Test(object):
def __init__(self):
self.__num=100
@property
def getNum(self):
return self.__num
@num.setter
def setNum(self,newNum):
self.__num=newNum
t = Test()
t.num=200#给t.num赋值,调用了setNum()
print(t.num)#获取t.num的值,调永getNum()