zoukankan      html  css  js  c++  java
  • 垃圾回收机制与用户交互

    考试(10分钟) 1、什么是变量?为何要有变量?

    变量是发生变化的量 ,用来记录的事物的变化状态

    2、变量的三大组成部分是?每部分的作用是什么?

    变量名、赋值符号、变量值

    先定义后引用 ​ xxx=10 ​ print(xxx)

    3、变量名的命名原则、规范、风格
    变量名由字母数字下划线组成且数字不能打头
    驼峰式 字母加下划线式
    见名知意
      name="egon"

      age_of_egon=18
      AgeOfEgon=18

    4、变量值的三个特征是什么?
      id(18):id是值在内存中的身份证号
      type(18)
      value 18
    5、is与==的区别
      is:判断的是id,id是变量值的身份,所以is称之为身份运算符
      ==:判断的是值

    6、id相同值是否可以相同?
          id相同值一定相同
    7、id不同值是否可以相同?
          id不同值可以相同

          value1 == value2
          value1 is value2
    8、用变量的定义说明int、float、str、list、dict、bool类型用于记录何种状态,每种类型
      至少写出三个示例,如下所示
          # int型
          age = 10
          level = 3
          year = 1990
        list与dict:
          相同点:都能存多个值,称之为容器类型
          不同点:
              list是用索引对应值,索引反映的是位置/顺序
              dict是用key对应值,其中key通常为字符串类型,而str类型具有描述性功能
                    所以key对值可以有描述性功能

              msg="egon 10"
              l=['egon',10]
              info={'name':'egon','age':10}
              info['name']

              info={0:'egon',1:10}

     

    今日内容 1、垃圾回收机制详解(了解) 引用计数 标记清除 分代回收

    2、与用户交互
       接收用户输入
           # python3中
               input
           # python2.7(了解)
               input
               raw_input
       格式化输出
           %
           str.format
           f''

    3、基本运算符
       算数运算符
       赋值运算符
          =
           增量赋值
           链式赋值
           交叉赋值
           解压赋值
       比较运算符
       逻辑运算符
           not、and、or
           区分优先级:not > and > or

           了解:
               短路运算
       成员运算符
           in
       身份运算符
           is

    3、流程控制之if判断
       if 条件:
           代码块
       elif 条件:
           代码块
       。。。
       else
           代码块

    垃圾回收机制

    1.引用计数
    x=10#直接引用
    print(id(x))
    y=x
    z=x

    l=["a","b",x]#间接引用
    print(id(l[2]))

    d={"aaa":x}
    print(id(d["aaa"]))

    x=10
    l=["a","b",x]#l=["a"的内存地址,"b"的内存地址,10的内存地址]
    x=123
    print(l[2])

    x=10
    x=[10,]
    l=["a","b",10]
    2.标记清除:用来解决循环引用带来的内存泄漏问题
    循环引用=导致内存泄漏
    l1=[111,]
    l2=[222,]
    l1.append(l2)#l1=[值111的内存地址,l2列表的内存地址]
    l2.append(l1)#l2=[值222的内存地址,l1列表的内存地址]
    print(id(l1[1]))
    print(id(l2))
    print(id(l1))
    print(id(l2[1]))

    del l1
    del l2
    3.分代回收:用来降低引用计数的扫描频率,提升垃圾回收的效率

    与用户交互

    1.接收用户的输入
    #在Python3中input输入的所有内内都会存为字符串类型
    username=input("请输入您的账号:")#yoona
    print(username,type(username))
    age=input("请输入你的年龄:")#23
    print(age,type(age))
    age=int(age)#int只能将纯数字的字符串转化为整形
    print(age>18)
    #int("12345")可以转化成整形
    #int("123.45")不可以转化为整形
    #int("123ab")不可以转化为整形

    #在Python2中:
    raw_input():用法与Python3的input一模一样
    input():要求用户必须输入一个明确的数据类型,输入的是什么类型,就存入什么类型
    age=input("请输入年龄:")#18
    age,type(age)#18,<type 'int'>
    x=input("请输入你的薪资:")#1.4
    x,type(x)#1.4,<type 'float>'
    x=input("请输入一个列表:")#[1,2,3]
    x,type(x)#[1,2,3] <type 'list'>
    2.字符串的格式化输入
    2.1%
    值按位置与%s 一一对应,少一个不行,多一个也不行
    res="my name is %s my age is %s"%("yoona","18")
    res="my name is %s my age is %s"%("18","yoona")
    res="my name is %s"%"yoona"
    print(res)

    以字典的形式穿值,打破位置的限制
    res="我的名字是%(name)s 我的年龄是%(age)s"%{"age":18,"name":"yoona"}

    %s可以接收任意类型
    print("my age is %s"%18)#整形
    print("my age is %s"%[1,22])#列表
    print("my age is %s"%{"a":1.4})#字典
    print("my age is %d"%18)#%d只能接收int
    print("my age is %d"%"18")#程序报错
    2.2str.format:兼容性好
    #按位置传值
    res="我的名字是{}我的年龄是{}".format("yoona",23)
    print(res)
    res="我的名字是{0}{0}{0}我的年龄是{1}{1}".format("yoona",23)
    print(res)#我的名字是yoonayoonayoona我的年龄是2323
    #打破位置限制,按照key=value传值
    res="我的名字是{name}我的年龄是{age}".format(age=18,name="yoona")

    2.4填充与格式化
    先取到值,然后在冒号后设置填充格式:[填充字符][对其方式][宽度]
    *<10:左对齐,总共10个字符,不够的用*填充
    print("{0:*<10}".format("开始执行"))#开始执行
    *>10:右对齐,总共10个字符,不够用*填充
    print("{0:*>10}".format("开始执行"))#开始执行
    *^10:居中显示,共10个字符,不够的用*填充
    print("{0:*^10}".format("开始执行"))#开始执行

    2.5精度与进制
    print("{salary:.3f}".format(salary=123123.12345))#精确到小数点后三位 123123.123
    print("{0:b}".format(123))#转换成2进制结果为:1111011
    print("{0:o}".format(9))#转换成8进制结果为:11
    print("{0:x}".format(15))#转换成16进制结果为:f
    print("{0:,}".format(999888777666))#千分位格式化999,888,777,666

    2.3f:python3.5以后才推出
    x=input("your name:")
    y=input("your age:")
    res=f"我的名字是{x}我的年龄是{y}"
    print(res)

    运算符

    1.算术运算符
    print(10+3.1)
    print(10+3)
    print(10/3)#结果带小数3.3333
    print(10//3)#取整3
    print(10%3)#取余1
    print(10**3)#取乘方
    2.比较运算符 > >= < <= == !=
    print(10>3)
    print(10==10)

    print(10>=10)
    print(10<=3)

    name=input("your name:")
    print(name=="yoona")
    3.赋值运算符
    3.1=:变量的赋值
    3.2增量的赋值:
    age=18
    age+=1 #age=age+1
    print(age)

    age*=3
    age/=3
    age%=3
    age**=3 #age=age**3

    3.3链式赋值
    x=10
    y=x
    z=y
    z=y=x=10#链式赋值
    print(x,y,z)
    print(id(x),id(y),id(z))

    3.4交叉赋值
    m=10
    n=20
    print(m,n)
    #交换值
    temp=m
    m=n
    n=temp

    m,n=n,m#交叉赋值
    print(m,n)

    3.5解压赋值
    salaries=[111,222,333,444,555]
    #把五个月的工作取出来分别赋值给不同的变量名
    mon0=salaries[0]
    mon1=salaries[1]
    mon2=salaries[2]
    mon3=salaries[3]
    mon4=salaries[4]
    解压赋值
    mon0,mon1,mon2,mon3,mon4=salaries
    print(mon0)
    print(mon1)
    print(mon2)
    print(mon3)
    print(mon4)

    mon0,mon1,mon2,mon3=salaries #对应的变量名少一个都不行
    mon0,mon1,mon2,mon3,mon4,mon5=salaries#对应的变量名多一个也不行
    #引入*,可以帮我们取两头的值,无法取中间的值
    #取前三个值
    x,y,z,*_=salaries=[111,222,333,444,555]#*-会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_
    print(x,y,z)#111,222,333
    print(_)
    取后三个值
    *_,x,y,z=salaries=[111,222,333,444,555]
    print(x,y,z)#333,444,555
    salaries=[111,222,333,444,555]
    _,*middle,_=salaries
    print(middle)

    #解压字典默认解压出来的字典的key
    x,y,z=dict{'a':1,'b':2,'c':3}
    print(x,y,z)

     

  • 相关阅读:
    海量图片曝光百度新家“搜索框”大厦
    您玩儿转手机通讯录了吗?
    这是给开发者的弥天大谎还是至理名言?
    互联网创业,不要让经验挡住你前进的道路
    永远不要去请示是否应该整理一下你的代码
    LinkedIn开放软件平台 开发者可集成其技术
    马云建新"淘宝" 借传统媒体补课线下消费群
    乔布斯的五大魔法
    全能 Google 服务提醒软件,GoogSysTray
    Twitter用户偏好新闻 Facebook用户更喜欢科技
  • 原文地址:https://www.cnblogs.com/mayrain/p/12422019.html
Copyright © 2011-2022 走看看