• python教程:封装与解构


    1、封装

    将多个值使用逗号分割,组合在一起
    本质上,返回一个元组,只是省掉了小括号

    t1 = 1,2
    t2 = (1,2)
    print(t1,type(t1))
    print(t2,type(t2))
    
    #执行结果:
    (1, 2) <class 'tuple'>
    (1, 2) <class 'tuple'>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、交换(封装、解构)

    a = 2
    b = 3
    # temp = a
    # a = b
    # b = temp
    a, b = b, a    #等号右边使用了封装,先封装成一个tuple,而左边就使用了解构
    print(a,b)
    
    #执行结果:
    3 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3、解构:

    把线性结构的元素解开,并顺序的赋给其它变量
    左边接纳的变量数要和右边解开的元素个数一致

    lst = [3, 5]
    first, second = lst
    print(first, second)
    
    #执行结果:
    3 5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    使用*变量名接收,但不能单独使用
    *变量名收集后组成一个列表

    lst = list(range(10))
    head, *mid, tail = lst
    print(head)
    print(mid)
    print(tail)
    
    #执行结果:
    0
    [1, 2, 3, 4, 5, 6, 7, 8]
    9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    *d = range(10)        #左边一个变量,不解构
    *x, *y = range(10)    #两个*号,不解构
    
    • 1
    • 2

    4、丢弃变量:

    这是一个惯例,是一一个不成文的约定,不是标准

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

    # 想要4的值
    # python学习交流:711312441
    lst = [1,(2,3,4),5]
    _, (*_, val), _ = lst
    print(val)
    
    #执行结果:
    4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    #_是合法的标识符,看到下划线就知道这个变量就是不想被使用,不过也可以使用输出:print(_)

    5、总结

    _这个变量本身无任何语义,没有任何可读性,所以不是用来给人使用的
    Python中很多库,都使用这个变量,使用十分广泛。请不要在不明确变量作用域的情况下,使用_导致和库中_冲突

    6、练习

    从 lst = list(range(10)) 这样一个列表, 取出第二个、第四个、倒数第二个

    lst = list(range(10))
    _, l1, _, l3, *_, l8, _ = lst
    print(l1,l3,l8)
    
    #执行结果:
    1 3 8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    环境变量JAVA_HOME=/usr/bin,返回环境变量名和路径

    val = "JAVA_HOME=/usr/bin"
    val_name, *_ , val_url = val.split("=")
    print(val_name)
    print(val_url)
    
    #执行结果:
    JAVA_HOME
    /usr/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    对列表[1,9, 8, 5, 6, 7, 4, 3, 2]使用冒泡法排序,要求使用封装和解构来交互数据

    lst = [1,9, 8, 5, 6, 7, 4, 3, 2]
    length = len(lst)
    for i in range(length):
        flag = True
        for j in range((length-1-i)):
            if lst[j] > lst[j+1]:
                lst[j], lst[j+1] = lst[j+1], lst[j]
                flag = False
        if flag:
            break
    print(lst)
    
    #执行结果:
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    get_views中list的arch格式
    图论04-【无权无向】-图的广度优先遍历
    Spring修炼之旅(4)静态/动态代理模式与AOP
    Asp.Net Core: Swagger 与 Identity Server 4
    Qt 5.9.8 安装教程
    outsystems合集系列(三)
    可用性测试的理解
    ENVI+ERDAS实现Hyperion叶绿素含量反演:经验比值法、一阶微分法
    图片转world文档 Excel excel
    Casper Network(CSPR)即将迎来两项重大升级,以实现功能上的进一步完善
  • 原文地址:https://blog.csdn.net/qdPython/article/details/128021234