• Python内存管理以及数据类型


    一.内存管理

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

       什么是垃圾:当一个值身上没有绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾。 Cpython解释器就会自动回收这样的垃圾。

         #引用计数增加

         #age=18 # 18的引用计数=1

         #x=age   #  18的引用计数=2

         #引用计数减少

         #age=19 # 18的引用计数=1 

         #del x     #  18的引用计数=0

    2.变量值的三个特征:

         id:反映的内存地址  # age=18   

         type::数据类型       # print(id(age))

         值:数据                  # orint(age)

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

           例:x='my name is wangke'

                  y='my name is wangke'

                  print(id(x),id(y))

                 # 40702000  40702216

    3. is 与 ==

         ==:值是否相等

         is  :id是否相等

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

        不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型

               例:x=10

                      print(id(x))

                      x=11

                      print(id(y))

                      # 1435266816

                         1435266848

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

               例:l=['a','b','c']

                      print(id(l))

                      l[0]='A'

                      print(id(l))

                      # 35398664

                         35398664

    二.python2中与用户交互

         1.在python3中只有一个input:

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

         2.在python2中只有一个raw_input,与python3中的input一模一样,而python2中的input要求用户必须输入一个明确的类型,输入什么类型就存成什么类型

    三.数据类型的基本使用

        1.整型int

          作用:用来记录等级、年龄、号码等状态

          定义:age=10  # age=int(10)

          使用:

          print(age+1)

          print(age>3)

        2.浮点型float

          作用:用来记录身高、体重、工资等状态

          定义:salary=3.5 # salary=float(3.5)

          使用:

          print(3.1+3.4)

          print(3.1<3.4)

          print(3.1>2)

    3.字符串类型str

          作用:用来记录描述性质状态,比如名字、性别

          定义:在单引号(' '),双引号(“ ”),三引号(' ' '   ' ' ' ," " "  " " ")内包含一系列的字符

          使用:print('abc'+'def') # 仅限字符串相加

                    print('abc'*10)     # 相乘的只能是数字

    4.列表类型list

          作用:用来记录多个值,用索引对应值,索引反映位置

          定义:在[ ]内用逗号分隔开多个任意类型的值

                    l=[1,3.1,'xxx',['a','b','c']]  # l=list(...)

          使用:# print(l[0])

                    # print(l[3][0])

    5.字典类型dict

           作用:用来记录多个值,用key对应value,其中key对value有描述性的功能
           定义:在{}内,用逗号分割开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key通常应该是str类型
                    d={'x':1,'y':3.1,'z':['a','b'],'m':{'aaa':1111}} #d=dict(...)
                    print(type(d))
          使用:
                    print(d['x'])
                    print(d['m']['aaa'])
                    print(d['z'][1])

    列表与字典的应用:在多个值是同种类型的时候用列表,在多个值是不同种类型的时候用字典。

    6.布尔类型:True,Flase

          所有数据类型都自带布尔值

          布尔值为假的数据类型:0,None,空

    7. None

    # print(type(None))

    四.基本运算符

    1.比较运算符
             > >=
             < <=
             ==
             !=
             print(10 != 11)

             # l1=['abc',1,['a','b','c']]

             # l2=['abc','aa',]

             # print(l2 > l1)

        2. 逻辑运算符
                   and:连接左右两个条件,只有两个条件同时成立时and运算的结果为True
                            print(10 > 9 and 3 > 2 and 'egon' == 'egon' 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(x is not None)

                            # age1=18
                            # age2=19
                            # print(age2 is not age1)

            注:最好用()来区分and、or、not的优先级

    练习:
    name_bk='egon'
    pwd_bak='123'
    name=input('please input your name: ')
    pwd=input('please input your password: ')
    if name == name_bk and pwd == pwd_bak:
        print('login successfull')
    else:
        print('username or password error')

  • 相关阅读:
    jQuery学习之------对标签属性的操作
    jQuery学习之------选择器
    PHP读取mysql中的数据
    sql server 数据库创建链接服务器访问另外一个sql server 数据库
    SQLServer使用链接服务器远程查询
    解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法
    Delphi XE10百集视频教程计划
    Windows 版本的iTunes 修改iPhone的备份路径
    Centos7 下mysql 密码重置
    Windows server 2012文件服务器配置
  • 原文地址:https://www.cnblogs.com/wangke0917/p/9983587.html
Copyright © 2020-2023  润新知