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

    封装

    • 将多个值使用逗号分割,组合在一起
    • 本质上,返回一个元组,只是省略了小括号
    • python的特有的语法,被很多语言学习借鉴
    t1 = (1,2) #定义元组
    t2 = 1,2  #将1和2封装成元组
    type(t1)
    type(t2)

    举例:

    a = 4 
    b = 5 
    temp = a 
    a = b 
    b = temp 
    #等价于
    a,b = b,a #右边使用了封装,左边使用了解构

    解构

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

    举例

    lst = [3, 5]
    first, second = lst 
    print(first, second)

    其他举例:

    a,b = 1,2 #正常的封装解构a,b = (1,2) #元组的封装解构a,b = [1,2] #列表的封装解构a,b = {10,20} #set的封装解构a,b = {'a':10,'b':20} # 非线性结构也可以解构 a,b = {10,20,30}a,*b = {10,20,30}  #*b 可以接受剩下的所有值,并生产个列表[a,b] = (1,2) [a,b] = 10,20(a,b) = {30,40}
    • 使用*变量名接收,但不能单独使用
    • 被*变量名 收集后组成一个列表

    举例:

    lst = list(range(1, 21, 2))
    head, *mid, tail = lst  #执行结果1 [3, 5, 7, 9, 11, 13, 15, 17] 19
    *lst2 = lst  #不能单独使用 
    *body, tail = lst   #执行结果 [1, 3, 5, 7, 9, 11, 13, 15, 17] 19
    head, *tail = lst  #执行结果 1 [3, 5, 7, 9, 11, 13, 15, 17, 19]
    head, *m1, *m2, tail = lst #只能有一个*变量名
    head, *mid, tail = "abcdefghijklmn"  #执行结果 a ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'] n
    type(mid) #mid 类型是列表 list

    丢弃变量

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

    举例:

    lst = [9,8,7,20]
    first, *second = lst
    head, *_, tail = lst
    print(head)
    print(tail)
    #_是合法的标识符,看到下划线就知道这个变量就是不想被使用
    print(_)

    总结

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

    练习

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

    lst = [1,(2,3,4),5]
    _,(*_,val),*_ = lst
    print(val)

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

    key,_,val = "JAVA_HOME=/usr/bin".partition("=")
    print(key,val)
  • 相关阅读:
    [leetcode-648-Replace Words]
    [leetcode-647-Palindromic Substrings]
    [leetcode-646-Maximum Length of Pair Chain]
    [leetcode-645-Set Mismatch]
    [leetcode-459-Repeated Substring Pattern]
    [leetcode-636-Exclusive Time of Functions]
    [leetcode-644-Maximum Average Subarray II]
    iOS开发之使用XMPPFramework实现即时通信(三)
    Oracle 内置sql函数大全
    Oracle 中的sql函数以及分页
  • 原文地址:https://www.cnblogs.com/xzkzzz/p/11196639.html
Copyright © 2011-2022 走看看