zoukankan      html  css  js  c++  java
  • python中重要的基础概念

    变量本质:

    • 可以是任意数据类型

    • 不需要指明数据类型,可以重复赋值,可以同时多个赋值

    • 等号就是赋值,把右边的赋值给左边。不等同于数学的等于号,python中的等于号是==

    • 变量名规则:

      • 可以用字母,下划线,尽量不要用__all__前后双下划线的变量名(python的内置函数)

      • 数字不可以数字开头,3a = 2,特殊符号也不行,? = ’h'

    • 指针:所有的数据都用到了指针,变量赋值也就是把变量名指向数据,然后找到数据,比如在内存中创建了一个a的变量,并把它指向’abc‘,即a='abc'。

      • 用id函数查看数据地址,是否为同一个数据

      >>> a = 1
      >>> b = 1
      >>> id(a)
      1806000352
      >>> id(b)
      1806000352
    • 引用计数:对一个不可变数据对象用到的次数,比如1这个数据,它被引用到的次数就叫做引用计数。比如a=1,在变量a创建的时候,计算机不会直接在内存中创建一个空间来保存1,而是找到已有的1,指针指向1,这样a可以找到1,节约内存,假如这时候b=1,引用计数加一。

      • 对于简单数据赋值会用到引用计数,但是复杂的数据比如中文赋值就不会用到引用计数,但是假如a=1,b=a就一定会用到引用计数。

        >>> c=1
        >>> d=1
        >>> id(c)
        1806917856
        >>> id(d)
        1806917856
        >>> a = '你好'
        >>> b = '你好'
        >>> id(a)
        2814784181152
        >>> id(b)
        2814785565776
    • python中用sys.getrefcount()查看引用计数,del函数删除引用计数,不释放内存

      >>> a = 1
      >>> sys.getrefcount(1)
      129
      >>> c= 1
      >>> sys.getrefcount(1)
      130
      >>> d = c
      >>> sys.getrefcount(1)
      131
      >>> del(a)
      >>> sys.getrefcount(1)
      130

    深浅拷贝

    • 由于引用计数的引用导致有时候变量用的时候改变一个,另一个会跟着改变。如

      >>> a = [1,2,3]
      >>> b = a
      >>> a[0]=2
      >>> b
      [2, 2, 3]
    • 为防止这种情况发生就需要拷贝实现地址不同
      • 切片拷贝:

        • 浅拷贝:一层列表

        >>> a = [1,2,3]
        >>> b = a[:]
        >>> a[0]=4
        >>> a = [4,2,3]
        >>> b
        [1, 2, 3]
        ​
        import copy
        b = copy.copy(a)
        • 深拷贝:嵌套列表

        import copy
        a=(1,2,6,'k',[1,'b'],[(1,2,5,8,'l','k'),6])
        b = copy.deepcopy(a)

    位运算(计算机真正存储的都是二进制补码)

    • 源码反码补码,正数源码反码补码都是其本身;负数源码是正数的符号位变为1(负数符号位都为1),反码是源码符号位不变,其余取反,补码是反码加1。

      ~a  按位取反
      a<<n 左移n位
      a>>n 右移n位
      a&b 与运算,全为1则为1,否则为0
      a|b 或运算,全为0则为0,否则为1
      a^b 异或运算对应相异则为1
  • 相关阅读:
    hdu 母牛的故事 递推题
    并查集
    又是矩阵 Uva上的一道 经典题目
    poj 3233 矩阵幂取模
    electronvue + elementui构建桌面应用
    主板cmos 映射表
    高级配置与电源接口 acpi 简介
    警告不能读取 AppletViewer 属性文件的解决方法
    高级 Synth(转载)
    vbs 查看硬件信息代码
  • 原文地址:https://www.cnblogs.com/kmnskd/p/9191352.html
Copyright © 2011-2022 走看看