• 0806 随笔


    1.数据类型分类

    按存值个数

    ​ 存一个值: 整型/浮点型/字符串

    ​ 存多个值: 列表/字典/元组/集合

    按有序or无序

    ​ 有序: 字符串/列表/元祖

    ​ 无序: 字典/集合

    按可变or不可变

    ​ 可变: 列表/字典/集合

    ​ 不可变: 整型/浮点型/字符串/元组

    2.深浅拷贝

    2.1 拷贝(简单的赋值)

    当lt2为lt的拷贝对象时,lt内的可变类型变化,lt2变化,lt内的不可变类型变化,lt2变化。

    lt = [1,2,3]
    lt2 = lt
    
    lt.append(4)
    print(lt)
    # 因为列表是可变类型,所以lt的值变化,lt2的值也会跟着变化
    print(lt2)
    

    2.2 浅拷贝(copy.copy)

    当lt2为lt的浅拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2不变化。

    import copy
    
    # lt2没有变化的情况
    lt = [1,2,3]
    lt2 = copy.copy(lt)
    
    lt.append(4)
    print(lt) # [1,2,3,4]
    print(lt2) # [1,2,3]
    
    #
    lt = [1000,2000,3000,[4000,5000,6000]]
    lt2 = copy.copy(lt)
    lt[0] += 1
    print(lt)    # [1001, 2000, 3000, [4000, 5000, 6000, 7]]
    print(lt2)   # [1000, 2000, 3000, [4000, 5000, 6000, 7]]
    
    # lt2变化的情况
    lt = [1000,2000,3000,[4000,5000,6000]]
    lt2 = copy.copy(lt)
    
    lt.append(4)
    print(lt)   # [1,2,3,[4,5,6],4]
    print(lt2)   # [1,2,3,[4,5,6]]
    
    #
    lt = [1000,2000,3000,[4000,5000,6000]]
    lt2 = copy.copy(lt)
    
    lt[-1].append(7)
    print(lt)   # [1,2,3,[4,5,6,7]]
    print(lt2)   # [1,2,3,[4,5,6,7]]
    

    2.3 深拷贝(copy.deepcopy)

    当lt2为lt的深拷贝对象时,lt内的可变类型变化,lt2不变化;lt内的不可变类型变化,lt2不变。

    import copy
    lt = [1000,2000,3000,[4000,5000,6000]]
    lt2 = copy.deepcopy(lt)
    
    lt.append(4)
    print(lt)    # [1000, 2000, 3000, [4000, 5000, 6000], 4]
    print(lt2)   # [1000, 2000, 3000, [4000, 5000, 6000]]
    
    lt = [1000, 2000, 3000, [4000, 5000, 6000]]
    lt2 = copy.deepcopy(lt)
    lt[-1].append(7)
    print(lt)   # [1000, 2000, 3000, [4000, 5000, 6000], 7]
    print(lt2)  # [1000, 2000, 3000, [4000, 5000, 6000]]
    

    拷贝/浅拷贝/深拷贝 只针对可变数据类型

    3.异常处理

    异常:报错

    就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止)

    3.1 语法异常(错误都是SyntaxError)

    # if # SyntaxError
    # 0 = 1 # SyntaxError
    
    # try:
    #     if
    # except Exception as e:   # 语法错误无法捕捉
    #     print(e)
    

    3.2 逻辑异常(错误类型往往是不一样的)

    1/0
    dic = {}
    print(dic['skjdis'])  # KeyError
    
    print(1)
    try:   # 尝试
        print(3)  # 代码自上而下,上面会运行
        1 / 0   # 错误不影响其他代码,报错马上终止try缩进里面的代码
        print(4)
    except:  # 除此之外
        pass
    
    
    print(1)
    try:   # 尝试
        num = input('输入一个值')
        dic = {'0':'a'}
        print(dic[num])
    
        print(3)  # 代码自上而下,上面会运行
        1 / int(num)   # 错误不影响其他代码,报错马上终止try缩进里面的代码
        print(4)
    except ZeroDivisionError as e:  # 除此之外 # try里面的代码出了什么错误,就得用什么错误捕捉 # as就是把错误赋值给e
        print('e:',e)               # 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。
    except KeyError as e:   # 可以写多个except捕捉多个异常
        print('e',e)
    
    ## 最重要,以后想捕捉异常就用这个
    print(1)
    try:  # 尝试
        num = input('输入一个值')
        dic = {'0': 'a'}
        print(dic[num])
    
        print(3)  # 代码自上而下,上面会运行
        1 / int(num)  # 错误不影响其他代码,报错马上终止try缩进里面的代码
        print(4)
    except Exception as e:  # Exception可以捕捉任意异常
        print('e:', e)
    

    3.3 了解

    print(1)
    try:  # 尝试
        1/0
    except Exception as e:  # Exception可以捕捉任意异常
        print('e:', e)
    finally:   # 最终的意思,无论报不报错都会打印
        print(3)
    print(2)
    
    # eg:
    f = open('test.py','r')
    data = f.read()
    try:
        1/0
        print(data)
        # def f  # 只删除f,变量名,对操作系统的占用不会关闭
    except Exception as e:
        print('e:',e)
    finally:
        f.close()   # 即删除f的引用,又会命令操作系统关闭对外存文件的占用
    
    # assert 断言,最早的时候没有pycharm,拿这个做调试,用不上了
    a = 1
    a += 1
    assert a == 2 # 条件成立会跳过,条件错误会报AssertionError错误
    print(3)
    
    # raise 主动抛错    创建框架/创建语言  C/C++ 有用
    raise KeyError('主动抛错')
    

    4.基本的文件处理

    什么是文件:操作系统提供给用户的一个虚拟单位

    文件有什么用:存储数据

    # 打开文件的流程
    
    # 1.找到文件路径
    path = r'F:实习python806	est'  # 鼠标右键点击文件,copy path
    
    # 2.双击打开
    f = open(path,'w',encoding='utf-8')   # r--->read 只读   w--->write 只写,清空当前文件后写入
    print(f)   # 文件数据类型
    
    # 3.看文件
    data = f.read()
    print(data)
    
    # 4.写文件
    f.write('你好')
    
    # 5.关闭文件
    #def f   # 只删除了文件的引用以及文件在python内存中的占用,但是没有删除对操作系统的占用
    f.close()  # 关闭操作系统对文件的占用
    

    5.绝对路径和相对路径

    5.1 绝对路径

    从根目录(C/D/E盘)开始的这种类型的路径叫做绝对路径

    path = r'F:实习python806	est'
    f = open(path, 'w')
    f.write('nick handsome')
    f.close()
    

    5.2 相对路径

    当前文件夹下,可以直接写文件名

    path = r'test'  # 鼠标右键点击文件,copy path
    f = open(path, 'r')
    print(f.read())
    f.close()
    

    5.3 补充

    为什么文件不能既可以读又可以写

    假设文件内容为1

    1.文件既可以读也可以写

    2.在1后面追加2,文件内容变成12(需要10s)

    3.在这10s内读文件(5s),读出来的内容是1

    4.在1后面追加2,文件内容变成12(需要时间10s),等10s过完文件内容其实是12,就会报错

  • 相关阅读:
    java多线程
    异常处理
    mabits
    梦想改造家之全世界最治愈的家浅析
    Activity
    java基础终稿
    Visual Studio Codes配置vs2017编译
    2017-2018-2 20179216 《网络攻防与实践》SM234算法
    2017-2018-2 20179216 《网络攻防与实践》 免杀技术
    2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击
  • 原文地址:https://www.cnblogs.com/yushan1/p/11311346.html
Copyright © 2020-2023  润新知