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)
  • 相关阅读:
    路由的添加和删除
    extjs中的tabpanle下的combobox提交问题
    Asp.net下from认证统一认证配置
    ASP.NET权限管理系统(FrameWork) 1.0.8 Release
    Web网站架构设计
    手机6120C 玩仙剑dos版
    Extjs 4.07 对类型定义引发的匹配问题
    Supesoft权限管理系统(FrameWork) 1.0.9 Release
    Google静态地图如何显示两点之间路线1(简单路线)
    Chrome不支持showModalDialog模态对话框和无法返回returnValue的问题
  • 原文地址:https://www.cnblogs.com/xzkzzz/p/11196639.html
Copyright © 2011-2022 走看看