疫情环境下的网络学习笔记 python Day 07

3.9

本周内容

周一

  1. 流程控制
    1. while
    2. for
  2. 补充
    1. 短路运算
    2. 深浅拷贝

周二

  1. 基本数据类型及其内置方法
  2. 数字,str,列表

周三

  1. 元组 tuple
  2. 字典
  3. 集合

周四

  1. 字符编码
    1. 编码与解码
    2. 怎么不乱码:以什么编码存的,就必须以什么编码格式取
  2. 文件处理
    1. 基本流程,打开,读写,关闭
    2. with语法
    3. 操作模式
      1. 控制文件读写,r,w,a
      2. 控制文件读写内容的模式:t,b
    4. 操作文件的方法
    5. 控制文件指针的移动
    6. 文件修改的两种方式

周五

  1. 文件处理高级

回顾

  1. 可变不可变,is,==
  2. 条件:用于判断
    1. 比较运算
    2. 所有的数据类型自带布尔值(隐式布尔值):0,none,空为假,其余全为真
    3. 布尔值/变量为布尔值
  3. 逻辑运算符:and,or,not
    1. and,or返回最后计算结果
    2. 偷懒原则
  4. if 流程控制:
    • if,elif,else
  5. 成员运算符
  6. 缩进,子代码块

正课

  1. 偷懒原则

    • 偷懒到哪个位置,就把那个位置的值返回

    • and在运算时如果左边的条件为假,则不会计算右边的条件,直接返回左边的值:显式布尔值返回True,隐式布尔值返回值本身

      10 > 3 and 0  # 返回0

深浅拷贝

list1 = list2 不叫拷贝:

  • 则两者分隔不开,因为指向同一个内存地址,所以改list1,list2也跟着改。只读形为下没有问题

需求:

  • 需求拷贝列表,产生一个新列表
  • 想让两个列表完全独立开,针对的是改操作,不是读操作

如何拷贝列表:

浅拷贝

list2=list1.copy()

新开辟一个内存空间,不加区分拷贝原列表第一层的内存地址并存入新列表

  • 只拷贝到第一层,新列表的内存地址是新的,但是新列表里面存的内存地址还是原来的;改变list1[0],list2[0]的值也会变
  • 对原列表中的不可变类型进行改变,则原列表中指向的内存地址改变,产生了新值,故浅拷贝的列表不会改变
  • 对原列表中的可变类型进行改变
  • 换瓶不换酒

要想拷贝得到的原列表和新列表哦完全区分开,需要深拷贝

深拷贝

对可变类型和不可变类型加以区分

import copy
list3 = copy.deepcopy(list1)

对不可变类型,指向原地址,对可变类型产生新地址:读的时候,指向原空间,改的时候是独立的

while循环

条件循环

  1.  while 条件:
         代码1
         代码2
     顶级代码
  2. 死循环与效率问题

    io操作运行有间隔,不会烧掉cpu

    纯计算无io的死循环会导致致命的效率问

  3. 实际上while在识别条件时,写1 比写true会稍快

  4. 不要写重复的代码

  5. 退出循环的两种方式

    1. break:立刻生效,中止本层循环,下面的代码不予执行

      user_name = 'deimos'
      user_pwd = '123'
      while True:
          ipt_user_name = input('请输入你的账号:')
          ipt_user_pwd = input('输入你的密码:')
          if ipt_user_name == user_name and ipt_user_pwd ==user_pwd:
              print('succ')
              while True:
                  cmd = input('输入指令:')
                  if cmd == 'quit':
                      break
                  print(cmd)
              break
          else:print('fail')
    2. 改变条件为false:运行完子代码块,下次循环判断条件生效

  6. while + continue

    结束当前循环,开始下一次循环

    continue之后的同级代码永远不会运行

  7. while + else

    在while循环结束后,且没有被break打断,才会运行

猜你喜欢

转载自www.cnblogs.com/telecasterfanclub/p/12449823.html
今日推荐