封装

  • 将多个值使用逗号分割,组合在一起
  • 本质上,返回一个元组,只是省略了小括号
  • 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)

python封装和解构的更多相关文章

  1. 第一天python3 封装和解构

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

  2. 03.python封装与解构

    封装与结构 基本概念 t1 = 1, 2 print(type(t1)) # 什么类型 t2 = (1, 2) print(type(t2)) Python等式右侧出现逗号分隔的多值的时候,就会将这几 ...

  3. 素数、杨辉三角、封装结构和集合操作(15)——IPython使用和封装解构

    IPython使用 帮助 ? ##Ipython的概述和简介 help(name) ##查询指定名称和帮助 obj? ##列出obj对象的详细信息 obj?? ##列出更详细的信息 特殊变量 _表示前 ...

  4. 8.字典dict和解构-封装

    字典dict 与列表的区别:列表可以存储大量的数据类型,但是只能按照顺序存储,数据与数据之间关联性不强 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 字典中的键 ...

  5. ES6 学习笔记(一)let,const和解构赋值

    let和const let和const是es6新增的两个变量声明关键字,与var的不同点在于: (1)let和const都是块级作用域,在{}内有效,这点在for循环中非常有用,只在循环体内有效.va ...

  6. python封装configparser模块获取conf.ini值(优化版)

    昨天晚上封装了configparser模块,是根据keyname获取的value.python封装configparser模块获取conf.ini值 我原本是想通过config.ini文件中的sect ...

  7. 使用boost.python封装C++库

    使用boost.python封装C++库 C++以高性能著称,但是编写较为复杂.而简洁是Python的强项.如果能珠联璧合,就能发挥两家之长.本文尝试用boost库的python模块封装C++ 前期准 ...

  8. python的解构

    今天学习python看到python的解构,觉得很有用就写下来,防止自己忘了 首先定义个列表 然后我们来解构 字典呢?字典需要两个*号才能解构 这样调用不明显 来个明显点的 上面错误是,你定义了一个形 ...

  9. 【AMAD】python-magic -- libmagic的python封装

    简介 动机 作用 用法 个人评分 简介 libmagic的python封装 动机 封装libmagic,使用python代码获取文件类型. 作用 libmagic通过文件头部,来确定文件的类型. 用法 ...

随机推荐

  1. mysql 创建用户并授权数据库

    create user test identified by ‘password’:password  你要创建的用户对应的密码 grant all on database.*  to  test;  ...

  2. 在linux中安装VM tools

    step 1:虚拟机选择安装 Vmware tools ,在DVD中将.tar.gz的文件包拖到桌面中: step 2:打开终端,切换到桌面,cd /home/whoami/桌面 cd /home/u ...

  3. WCF Endpoint分类

    WCF中可以为一个Service配置多个Endpoint 这些Endpoint的分类方法有下面3中 1.全局就一个endpoint,一个接口公开所有的方法,这适合简单的业务场景 2.将endpoint ...

  4. 删除集合元素Collection ,remove()

    package seday11;/*** @author xingsir*/public class coordinate { private int x; private int y; /* * 右 ...

  5. Codeforces Round #585 (Div. 2) A. Yellow Cards(数学)

    链接: https://codeforces.com/contest/1215/problem/A 题意: The final match of the Berland Football Cup ha ...

  6. 15、生命周期-BeanPostProcessor-后置处理器

    15.生命周期-BeanPostProcessor-后置处理器 BeanPostProcessor 接口 package org.springframework.beans.factory.confi ...

  7. 牛客 17439:Endless Pallet

    题目传送门 算法:min-max 容斥.树上背包.NTT. 题意简述 有一棵 \(n\) 个点的树.一开始所有点都是白色,每次操作会随机选择 \(\frac{n \times (n + 1)}{2}\ ...

  8. 转:关于C++ const 的全面总结

    转自:https://www.cnblogs.com/xkfz007/articles/2419518.html    如有侵权请联系博主,立即删除. C++中的const关键字的用法非常灵活,而使用 ...

  9. vue 使用 echart ,自定义样式案例

    1.vue 安装 echart 库 npm install echarts --save 2.vue代码 引入 let echarts = require("echarts/lib/echa ...

  10. java编写网站数据抓取

    来公司已经俩月了,每天加班平均工时11个小时的我又想起了老东家温馨舒适安逸的生活.已经有好久没时间读博客写博客了,我觉得我退步了,嗯嗯,我很不开心 今天记录下抓数据的一些东西吧. 数据抓取现在是很普遍 ...