zoukankan      html  css  js  c++  java
  • Python的封装和解构

    封装

    使用逗号将多个值组合在一起,返回一个元组,省略了小括号

    In [72]: tp1=(1,2)
    
    In [73]: type(tp1)
    Out[73]: tuple
    
    In [74]: tp2=1,2
    
    In [75]: type(tp2)
    Out[75]: tuple
    
    In [76]: tp2='ab',2,'c'
    
    In [77]: tp2
    Out[77]: ('ab', 2, 'c')
    In [78]: tp2=[1,2],'ab',2,'c'
    
    In [79]: tp2
    Out[79]: ([1, 2], 'ab', 2, 'c')

    解构

    将线性结构解开,顺序赋值给其他变量(左边接受赋值的变量数要和右边数据结构解开的元素数一致)

    In [80]: str1='abc','bcd'
    
    In [81]: sub1,sub2=str1
    
    In [82]: sub1
    Out[82]: 'abc'
    
    In [83]: sub2
    Out[83]: 'bcd'

    解构

    In [91]: a,b={1,2}
    
    In [92]: a
    Out[92]: 1
    
    In [93]: b
    Out[93]: 2
    
    In [94]: a,b={'a':10,'b':30}
    
    In [95]: a
    Out[95]: 'b'
    
    In [96]: b
    Out[96]: 'a'
    
    In [98]: a,b={1,2,3}
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-98-14e2385ba548> in <module>
    ----> 1 a,b={1,2,3}
    
    ValueError: too many values to unpack (expected 2)
    
    In [106]: [a,b]=(1,2)
    
    In [107]: a
    Out[107]: 1
    
    In [108]: b
    Out[108]: 2
    
    In [109]: [a,b]=10,20
    
    In [110]: a
    Out[110]: 10
    
    In [111]: b
    Out[111]: 20
    
    In [112]: (a,b)={'a':10,'b':30}
    
    In [113]: a
    Out[113]: 'b'
    
    In [114]: b
    Out[114]: 'a'

    结构的本质

    下面的例子:(a,b)接受右边的值后组成的一个元组,但是没有变量被赋值(a,b)这个元组,ipython使用 _ 来接受被遗弃的变量

    In [121]: (a,b)=2,3
    
    In [122]: a,b
    Out[122]: (2, 3)
    
    In [123]: _
    Out[123]: (2, 3)

    组合使用封装和解构(bubble)

    In [84]: a = 1
    
    In [85]: b = 2
    
    In [86]: tmp =a
    
    In [87]: a = b
    
    In [88]: b = tmp
    
    In [89]: a
    Out[89]: 2
    
    In [90]: b
    Out[90]: 1
    
    与下面的表达式等价:
    
    a, b = b, a

    上面的语句中,等号左边使用了结构,右边使用封装

    Python3中的解构

    使用*VARIABLE 接收,*VARIABLE接收后组成一个列表

    In [1]: lst= list(range(10))
    
    In [2]: a,*mid,b = lst
    
    In [3]: a
    Out[3]: 0
    
    In [4]: b
    Out[4]: 9
    In [8]: *head, tail=lst
    
    In [9]: head
    Out[9]: [0, 1, 2, 3, 4, 5, 6, 7, 8]
    
    In [10]: head, *tail=lst
    
    In [11]: tail
    Out[11]: [1, 2, 3, 4, 5, 6, 7, 8, 9]

    不能给多个表达式

    In [15]: a,*var1,b,*var2,tail=lst
      File "<ipython-input-15-7b7f4a61b498>", line 4
    SyntaxError: two starred expressions in assignment

    切片练习

    从lst=[1,(3,4,5),10]中提取出5

    In [22]: _,[*_,tail],_=lst
    
    In [23]: tail
    Out[23]: 5
  • 相关阅读:
    投资理财知识小结1
    iOS中异常处理机制使用小结
    iOS中NSBundle使用小结
    ant design vue a-cascader 级联选择器 数据回显
    hbase数据存储及数据访问原理
    第15章: Prometheus监控Kubernetes资源与应用
    第14章:部署Java网站项目案例
    第13章:Kubernetes 鉴权框架与用户权限分配
    第12章:有状态应用部署
    第11章:Pod数据持久化
  • 原文地址:https://www.cnblogs.com/zh-dream/p/13441589.html
Copyright © 2011-2022 走看看