zoukankan      html  css  js  c++  java
  • 第九章元组、文件及其他

    #1.
    #A:+ * 切片 作用于元组的时候会返回新元组
    #B:元组的不可变性只适用于于元组本身顶层而非其内容,例如:元组内部列表时可以被修改的
    tupleTem = ()                       #tupleTem = ()
    tupleTem = 0, 1                     #tupleTem = (0, 1)
    tupleTem = (0)                      #tupleTem = 0
    tupleTem = tupleTem + 1             #tupleTem = 1
    tupleTem = (0, )                    #tupleTem = (0,)
    #tupleTem = tupleTem + 1            #运行出错
    tupleTem += (1, 2)                  #tupleTem = (0, 1, 2)
    #tupleTem += (3)                    #运行出错
    v = (v for v in range(1, 3))        #v = <generator object <genexpr> at 0x0000000002D5F5E8>
    tupleTem = tuple(v)                 #tupleTem = (1, 2)
    tupleTem = 1, 2, 3, 4               #tupleTem = (1, 2, 3, 4)
    tupleTem = (1, (1, 's'))            #tupleTem = (1, (1, 's'))
    v = tupleTem[1][1]                  #v = 's'
    tupleTem = ([1, 2], 2, 3,)          #tupleTem = ([1, 2], 2, 3)
    #tupleTem[0] = [1]                  #运行出错
    tupleTem[0].append('s')             #tupleTem = ([1, 2, 's'], 2, 3)
    
    tupleTem = tuple((v * 4 for v in 'szn'))    #tupleTem = ('ssss', 'zzzz', 'nnnn')
    tupleCopy = tupleTem[:]                     #tupleCopy = ('ssss', 'zzzz', 'nnnn')
    tupleTem += (1, 2)                          #tupleTem = ('ssss', 'zzzz', 'nnnn', 1, 2)  tupleCopy = ('ssss', 'zzzz', 'nnnn')
    
    #2.
    #A:文件迭代器是最好的读取行工具
    #B:write()返回写入字符数
    buff = []
    with open('1.txt', "rb") as pFile:
        for line in pFile:
            buff.append(line)
    #buff = [b'1
    ', b'2
    ', b'3']
    
    pFile = open('2.txt', 'w')
    v = pFile.write('12
    3')            #v = 4
    pFile.close()
    
    #3.
    #A:pickle模块,能让我们直接在文件中存储几乎任何python对象
    import pickle
    value = [1, 2, (3, 4), '5', {6:7}]
    pFile = open("Test.pkl", "wb")
    pickle.dump(value, pFile)
    pFile.close()
    pFile = open("Test.pkl", "rb")
    value1 = pickle.load(pFile)         #value1 = [1, 2, (3, 4), '5', {6: 7}]
    
    #4.
    try:
        0 / 2               #执行至此
    except ZeroDivisionError:
        print()
    else:
        print()             #执行至此
    finally:
        print()             #执行至此
    
    try:
        2 / 0               #执行至此
    except KeyError:
        print()
    except ZeroDivisionError:
        print()             #执行至此
    else:
        print()             
    finally:
        print()             #执行至此
    
    #5.
    #A:赋值操作总是存储对象的引用,而不是这些对象的拷贝
    #B:无条件的切片以及copy()只能做顶层复制,不能够复制嵌套的数据结构
    value = [1, 2]
    v0 = [value, 's']
    v1 = {'a' : value}
    v1['a'].append('s')     #v1 = {'a': [1, 2, 's']}    value = [1, 2, 's']    v0 = [[1, 2, 's'], 's']
    
    v0 = [1, 2]
    v1 = [v0, 's']
    v2 = v1.copy()
    v2[0].append('z')       #v2 = [[1, 2, 'z'], 's']    v0 = [1, 2, 'z']
    
    v0 = [1, 2]
    v1 = [v0, 's']
    import copy
    v2 = copy.copy(v1)
    v2[0].append('z')       #v2 = [[1, 2, 'z'], 's']    v0 = [1, 2, 'z']
    
    v0 = [1, 2]
    v1 = [v0, 's']
    import copy
    v2 = copy.deepcopy(v1)
    v2[0].append('z')       #v2 = [[1, 2, 'z'], 's']    v0 = [1, 2]
    
    #6.
    #A:在python3中,不支持字典大小比较,字典通过排序之后的(键、值)列表进行比较
    #B:在在python3中,混合数字比较是错误的,比如1 < 's'
    v0 = {'a':2,'b':1}
    v1 = {'b':1, 'a':2}
    #v = v0 < v1            #运行出错
    v = v0 == v1            #v = True
    
    #v = 1 < 's'            #运行出错
    #v = 1 < [1]            #运行出错
    
    #7.
    #A:任何非空对象为真,非0数字为真,其余为假,None也为False
    
    #8.
    #A:isinstance(object, classinfo) object是否是classinfo类型
    v = isinstance('s', str)        #v = True
    v = isinstance(1, list)         #v = False
    v = isinstance([], list)        #v = True
    v = isinstance((1, 's'), tuple) #v = True
    
    #9.
    v = [1, 2]
    v1 = v * 4              #v1 = [1, 2, 1, 2, 1, 2, 1, 2]
    v2 = [v] * 4            #v2 = [[1, 2], [1, 2], [1, 2], [1, 2]]
    v[0] = 0                #v1 = [1, 2, 1, 2, 1, 2, 1, 2]  v2 = [[0, 2], [0, 2], [0, 2], [0, 2]]
    
    #10.
    v0 = [1, 2]
    v1 = v0
    v0.append(3)            #v0 = [1, 2, 3] v1 = [1, 2, 3]
    
    v = [1, 2]
    v.append(v)             #v = [1, 2, [...]]
    value = v[2][2][2][2][2][2][2][2][2][2]     #value = [1, 2, [...]]
    print(v)                #输出[1, 2, [...]]
    

      

  • 相关阅读:
    ios 将Log日志重定向输出到文件中保存
    IOS中GPS定位偏移纠正(适用于Google地图)
    java与IOS之间的RSA加解密
    [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
    [IOS] Storyboard全解析-第一部分
    NTP时间同步
    Prthon多线程和模块
    Python循环语句,对象
    Python起步学习
    Nginx实战之反向代理WebSocket的配置实例
  • 原文地址:https://www.cnblogs.com/szn409/p/6545523.html
Copyright © 2011-2022 走看看