zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    频率和相位有什么关系
    DMA缓冲区乒乓操作的处理
    深入了解DSP与ARM的区别与联系
    python 里 np.array 的shape (2,)与(2,1)的分别是什么意思,区别是什么?(2020年修订)
    手写promise
    axios源码学习记录
    redux 之isPlainObject
    redux教程之源码解析3applyMiddleware(分析在注释中)
    redux教程之源码解析2 combineReducers(分析在注释中)
    redux教程之源码解析createStore
  • 原文地址:https://www.cnblogs.com/wangjinliang1991/p/9898916.html
Copyright © 2011-2022 走看看