zoukankan      html  css  js  c++  java
  • 内存管理,数据类型的基本使用

    内存管理

    1.Cpython解释器的垃圾及回收机制

    什么是垃圾: 当一个值身上没有绑定任何变量(该值的引用计数=0),该值就是垃圾.引用计数增加

      
    age=18 # 18的引用计数等于1
    x=age # 18的引用计数等于2
    print(age)
    print(x)

    引用计数减少

      
    age=19 #18的引用计数等于1
    print=(age)

    del x #18的引用计数等于0

    2.变量值的三个特征

    Id:唯一标识一个对象
    Type:标识对象的类型
    Value:对象的值

    id: 反映的是内存地址 type:数据类型 值:

      
    age=18
    print(id(age))
    print(type(age))
    print(age)

    总结: id相同,值一定相同 值相同,id可以不同

      
    >>> x='name:egon age:18***'
    >>> y='name:egon age:18***'
    >>> id(x)
    2847698422856
    >>> id(y)
    2847698422928

    3.is与 ==

    == : 值是否相等

    is : id是否相等

    4.可变类型与不可变类型

    可变类型: value值改变,id不变,证明就是在改变原值

      
    l=['a','b','c']
    print(id(l))
    l[0]='A'
    print(id(l))
    print(l)

    不可变类型:value值改变,id也随之改变,证明不是改变原值,而是创建了新值,原值是不可改变类型

      
    x=10
    print(id(x))
    x=11
    print(id(x))

    python2中与用户交互

    1.在python3中只有一个input

    特点:会将用户输入的任意内容都存成str类型

    2.在python2中只有一个raw_input,与python3的input一模一样

    x=raw_input('>>>: ')

    要求用户必须输入一个明确的类型,输入什么类型就存成什么类型

    数据类型的基本使用

    1.整型 int

    作用:用来记录年龄/等级/各种号码状态

    定义:

    age=10 #age=int(10)

    2.float浮点型

    作用:用于标识工资/身高/体重

    定义:

    salary=3.1 #salary=float(3.1)

    注:整型int和浮点型float也就是数字,可以进行加减乘除等运算.

    3.字符串str

    在python中,加了引号的字符就是字符串类型,python并没有字符类型

    作用: 描述性的内容,如姓名/性别/国籍/种族

    定义:

    name='kopa' #name=str('kapa')

    单引号与双引号没有区别,只考虑单双的引用配合.

    多行字符串必须用多引号

      msq = "My name is Kopa,I'm 18 years old"

    msq = '''
    努力朝九晚五
    渴望浪迹天涯
    '''

    字符串只能进行"相加"和"相乘"运算

      >>> name='egon'
    >>> age='18'
    >>> name+age #相加其实就是简单拼接
    'egon18'
    >>> name*5
    'egonegonegonegonegon'
    注:字符串相加的效率不高

    字符串1加字符串3,并不会在字符串1 的基础上加上字符串2,而是申请一个全新的内存空间存入字符串1和字符串3,相当于字符串1与字符串3的空间被复制了一次.

    注:只能字符串加字符串,不能字符串加上其他类型

    4.列表list

    在[ ]内用逗号分隔,可以存放n个任意类型的值

    作用:存储多个值的情况,比如一个人有多个爱好

    定义:

    students = [ 'egon','alex','kopa'] #students = list(['egon','alex','kopa'])

      
    #存放多个学生的信息:姓名,年龄,爱好
    students_info=[['kopa',18,['play','read']],['egon',18,['sleep','play']]]
    print(students_info[0][2][0]) #取出第一个学生的第一个爱好'play'

    5.字典{ }

    为何还要用字典?

    存放一个人的信息:姓名/性别/年龄,有很多个值.可以用列表list去存放,定义列表的目的不单单是为了存,还要考虑取值,可用索引对应的值去取,而真正意义上并没有规定什么位置放什么值,所以字典就是既可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value.

    在{ }内用逗号分隔,可以存放多个key:value的值,value可以是任意类型.

    作用: 存储多个值的情况,每个值都有唯一一个对应的key,可以更加方便高效地取值

    定义:

    info={'name':'kopa','age':18,'height':126}

    字典相关的嵌套/取值
      info={
       'name':'kopa',
       'hobbies':['play','read'],
       'company_info':{
           'name':'oldboy',
           'type':'education'
           'emp_num':40,
      }
    }
    print(info['commpany_info']['name']) #取公司名


    students=[
      {'name':'alex','age':28,'hobbies':['play','sleep']},
      {'name':'kopa','age':18,'hobbies':['play','read']},
    ]
    print(student[1]['hobbies']) #取第二个学生的第二个爱好

    6.布尔

    布尔值,一个Ture. 一个False

      >>> a=3
    >>> b=5
    >>>
    >>> a > b #不成立就是False,即假
    False
    >>>
    >>> a < b #成立就是True, 即真
    True
    布尔类型的重点
    • None,0 ,空(空字符串,空列表,空字典等)三种情况下布尔值为Fales

    • 其余均为真

    基本运算符

    比较运算符

    ==

    !=/<> 不等于

    `>

    <

    `>=大于等于

    <=小于等于

    逻辑运算

    and

    连接左右两个条件,只有两个条件同时成立时and预算的结果为True

    or

    连接左右两个条件,两个条件成立任意一个or运算的结果就为True

      
    print(False or False or True or False or 3 > 10)


    res=(True or (False and True)) or ((False or True) and False)
    res=(True or False) or (True and False)
    res=True or False
    print(res)

    not

      
    print(not 10 > 3)

    x=None
    print(not x is None)
    print(x is not None)

    age1=18
    age2=19
    print(age2 is not age1)
  • 相关阅读:
    【转】二叉树中两个节点的最近的公共父节点
    查找最小的k个元素
    字符串的排列
    php字符串操作
    Android手机app启动的时候第一个Activity必须是MainActivity吗
    ASP.NET网站前端页面的复制
    MySQL字段类型说明
    转:Zend Server Community Edition(CE) 安装手记
    数据库远程导入导出步骤
    转:两种转换mysql数据编码的方法latin1转utf8
  • 原文地址:https://www.cnblogs.com/kp1995/p/9983993.html
Copyright © 2011-2022 走看看