python第九天-核心篇1

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()
原文地址:https://www.cnblogs.com/wangjinliang1991/p/9898916.html