• 3.python封装和解构,丢弃变量


    封装和解构
    1.封装
    (1)将多个值使用逗号分割,组合在一起
    (2)本质上,返回一个元祖,只是省掉了小括号
    (3)python特有语法,被很多语言借鉴
    举例:定义为元祖

    >>> t1=(1,2)
    >>> type(t1)
    <class 'tuple'>

    举例:将1和2封装成元祖

    >>> t2=1,2
    >>> type(t2)
    <class 'tuple'>

    2.封装和解构

    >>> a=4
    >>> b=5
    #封装
    >>> c=a,b
    >>> c
    (4, 5)
    #解构
    >>> b,a=c
    >>> b
    4
    >>> a
    5

    3.解构
    (1)线性结构的元素解开,并顺序的赋给气他变量
    (2)左边接纳的变量数要和右边解开的元素个数一致
    举例:把列表里的两个值解构

    >>> list=[3,5]
    >>> first,second = list
    >>> print(first,second)
    3 5

    举例:把字典里的两个值解构

    >>> a,b={'a':10,'b':20}
    >>> a
    'b'
    >>> b
    'a'

    举例:

    >>> a,*b={10,20,30}
    >>> a
    10
    >>> b
    [20, 30]

    举例:

    >>> [a,b]=10,20
    >>> a
    10
    >>> b
    20

    举例:

    >>> (a,b)={30,40}
    >>> a
    40
    >>> b
    30

    4.python3的解构
    (1)使用*变量名接收,但不能单独使用
    (2)被*变量名收集后组成一个列表
    举例:

    >>> lst = list(range(1,51,2))
    >>> lst
    [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]

    举例:a取第一位,b去第二到倒数第二位,c取最后一位

    >>> a,*b,c=lst
    >>> a
    1
    >>> b
    [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47]
    >>> c
    49

    举例:*a尽可能的拿,b取最后一位

    >>> *a,b=lst
    >>> a
    [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47]
    >>> b
    49

    举例:a取第一位,b取2到最后一位

    >>> a,*b=lst
    >>> a
    1
    >>> b
    [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]

    举例:a取第一位,b去第二到倒数第二位列表类型,c取最后一位

    >>> a,*b,c="abcdefghijklmn"
    >>> a
    'a'
    >>> b
    ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm']
    >>> c
    'n'
    >>> type(b)
    <class 'list'>

    5.练习

    对列表[1,9,8,5,6,7,4,3,2]使用冒泡法排序,要求使用封装和结构来交互数据
    交换排序
    lst=[1,9,8,5,6,7,4,3,2]
    for i in range(9):                          #有几个数字循环几次,循环9次
        for j in range(8-i):                    #循环0-7
            if lst[j] > lst[j+1]:               #1>9
                #右边封装到左边依次解构
                lst[j],lst[j+1]=lst[j+1],lst[j]  #1,2=
    print(lst)
    返回:
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    丢弃变量
    (1)这是一个惯例,是一个不成文的约定,不是标准
    (2)如果不关心的一个变量,就可以定义改变量名字为_
    (3)_是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用

    >>> lst=[9,8,7,20]
    >>> first,*second=lst
    >>> a,*_,b=lst
    >>> print(a)
    9
    >>> print(b)
    20

    总结:
    _这个变量本身无任何意义,没有任何可读性,所以不是用来给人使用的
    python中很多库,都是用这个变量,使用十分广泛,请不要在不明确的变量作用域的情况下,使用_导致和库中_冲突
    练习1:lst=list(range(10))这样一个列表,取出第二个,第四个,倒数第二个

    >>> lst=list(range(10))
    >>> _,a,_,b,*_,c,_=lst
    >>> a
    1
    >>> b
    3
    >>> c
    8

    练习2:从lst=[1,(2,3,4),5]中,提取4出来

    >>> lst=[1,(2,3,4),5]
    >>> _,[*_,a],_=lst
    >>> a
    4

    练习3:环境变量JAVA_HOME=/USR/BIN,返回变量名和路径

    >>> s='JAVA_HOME=/USR/BIN'
    >>> name,*_,paht=s.split('=')
    >>> name
    'JAVA_HOME'
    >>> path
    '/USR/BIN'
  • 相关阅读:
    javascript验证QQ号、邮箱和手机号码
    js 引擎 和 html 渲染引擎
    ASP.NET MVC 4 简介
    SqlDateTime overflow / SqlDateTime 溢出
    ASP.NET MVC ViewBag/ViewData/TempData区别
    C#内存分配
    Repeater数据绑定和操作
    Uploadify导致Chrome频繁崩溃Crash
    巧用Ajax的beforeSend 提高用户体验
    ASP.NET MVC
  • 原文地址:https://www.cnblogs.com/xixi18/p/8328408.html
Copyright © 2020-2023  润新知