Python进阶小结
一、异常TODO
万能捕捉异常公式
try:
# 逻辑代码
1/0
except Exception as e:
print(e)
division by zero
二、深浅拷贝
2.1 拷贝
拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的
l1 = ['a','b','c',['d','e','f']]
l2 = l1
l1.append('g')
print(l1) # ['a','b','c',['d','e','f'],'g']
print(l2) # ['a','b','c',['d','e','f'],'g']
如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变
2.2 浅拷贝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.copy(l1)
l1.append('g')
print(l1) # ['a','b','c',['d','e','f'],'g']
print(l2) # ['a','b','c',['d','e','f']]
l1[3].append('g')
print(l1) # ['a','b','c',['d','e','f','g'],'g']
print(l2) # ['a','b','c',['d','e','f','g']]
如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变
2.3 深拷贝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.deepcopy(l1)
l1.append('g')
print(l1) # ['a','b','c',['d','e','f'],'g']
print(l2) # ['a','b','c',['d','e','f']]
l1[3].append('g')
print(l1) # ['a','b','c',['d','e','f','g'],'g']
print(l2) # ['a','b','c',['d','e','f']]
如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化
三、数据类型内置方法
3.1 数字类型内置方法
3.1.1 整型
- 作用:定义年龄/身高/体重/id号
- 定义方式:
age = 18
age = int('18')
- 方法:
+ - * / % // **
- 多个值or一个值:一个值
- 有序or无序:压根没有有序无序这一说
- 可变or不可变:不可变
- 可变:值变id不变,值变id也变
3.1.2 浮点型
- 作用:定义薪资/价格
- 定义方式:
salary = 3.2
salary = float('3.2')
- 方法:
+ - * / % // **
- 多个值or一个值:一个值
- 有序or无序:压根没有有序无序这一说
- 可变or不可变:不可变
3.2 字符串类型内置方法
- 作用:姓名/
- 定义方式:
name = 'nick'
name = "nick"
name = '''
nick
nick
'''
name = """
nick
nick
"""
name = "'nick'"
name = '"nick"'
- 方法
- 优先掌握
- 索引取值
- 切片
- 长度
- 切分split
- 除两边空白strip
- 成员运算in not in
- for循环
- 需要掌握
- lstrip/rstrip:左/右除空白
- rsplit:从右开始切割
- upper/lower:大写/小写
- startstwith/endswith:以某开头/以某结尾
- join:连接列表为字符串
- replace:替换字符
- isdigit:判断是否为数字
- 了解
- find/rfind/index/rindex/count:查找/从右开始查找/索引结果/从右开始索引结果/计数
- center/ljust/rjust/zfill:居中填充/居左填充/居右填充/填充0
- expantabs:扩展tab键
- capitalize/swapcase/title:大写/大小写转换/首字母大写
- is系列:略
- 优先掌握
- 多个值or一个值:一个值
- 有序or无序:有序
- 可变or不可变:不可变
3.3 列表类型内置方法
- 作用:多个女朋友/
- 定义方式:[]内用逗号隔开多个任意数据类型的元素
friends_list = ['longzeluola','canglaoshi','qiaobenai','nick']
lis = list('abcd')
- 方法:
- 优先掌握
- 索引取值(即可取又可改)
- 切片
- 长度
- append
- 成员运算
- for循环
- 需要掌握
- count:元素个数计数
- remove:移除元素
- reverse:反转列表
- pop:删除元素
- insert:插入元素
- sort:列表排序
- index:索引元素
- del:删除元素
- extend:扩展列表
- clear:清除列表
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:有序
- 可变or不可变:可变
3.4 元祖类型内置方法
- 作用:类似于列表,可以取不可以存
- 定义方式:
friends_tuple = ('longzeluola','canglaoshi','qiaobenai','nick')
tup = tuple('abcd')
- 方法
- 优先掌握
- 索引取值(无法更改)
- 切片
- 长度
- 成员运算
- for循环
- count:元素个数计数
- index:元素位置索引
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:有序
- 可变or不可变:无可变不可变这一说
3.5 字典类型内置方法
- 作用:值太多列表存容易,取麻烦时使用字典
- 定义方式:
nick_info_dict = {
'name':'nick',
'height':180,
'weight':140,
'hobby_list':['read','run','music','fishing','programming','coding','debugging']
}
for k,v in nick_info_dict.items():
print(k,v)
- 方法
- 优先掌握
- 按键取值
- 长度
- keys/values/items
- for循环
- 成员运算
- 需要掌握
- pop:删除元素
- fromkeys:由一个列表生成一个字典,默认值为None
- setdefault:有指定key不会改变值;无指定key则改变值
- get:通过key获取value,无key默认获取None
- update:扩展字典
- del:删除字典键值对
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:无序
- 可变or不可变:可变
3.6 集合类型内置方法
- 作用:存多个值,为了集合之间做运算
- 定义方式:
s = set()
s = {1,2,3,4,5,1}
- 方法:
- 优先掌握
- 去重
- 并集 |
- 交集 &
- 差集 -
- 对称差集 ^
- 父集 > >=
- 子集 <&emsp;<=
==
- 需要掌握
- add:添加元素
- difference_update:更新该集合没有的元素
- isdisjoint:如果两个元素交集为空返回True,否则返回False
- remove:移除元素 # 值不存在会报错
- discard :移除元素 # 不会报错
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:无序
- 可变or不可变:可变
3.7 布尔类型
- 作用:一般用于判断,除了0/None/空/False自带布尔值为False,其他的数据类型自带布尔值为True
四、数据类型分类
4.1 按值个数
一个值 | 多个值 |
---|---|
整型/浮点型/字符串 | 列表/元祖/字典/集合/ |
4.2 按有序无序
有序 | 无序 |
---|---|
字符串/列表/元祖 | 字典/集合 |
4.3 按可变不可变
可变 | 不可变 |
---|---|
列表/字典/集合 | 整型/浮点型/字符串 |
Python进阶小结的更多相关文章
- 47-Python进阶小结
目录 Python进阶小结 一.异常TODO 二.深浅拷贝 2.1拷贝 2.2 浅拷贝 2.3 深拷贝 三.数据类型内置方法 3.1 数字类型内置方法 3.1.1 整型 3.1.2 浮点型 3.2 字 ...
- Python进阶 - 对象,名字以及绑定
Python进阶 - 对象,名字以及绑定 1.一切皆对象 Python哲学: Python中一切皆对象 1.1 数据模型-对象,值以及类型 对象是Python对数据的抽象.Python程序中所有的数据 ...
- Python进阶:设计模式之迭代器模式
在软件开发领域中,人们经常会用到这一个概念——“设计模式”(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一本圣经级的书籍<设计模式:可复用面向对象软件的基础 ...
- Python进阶:全面解读高级特性之切片!
导读:切片系列文章连续写了三篇,本文是对它们做的汇总.为什么要把序列文章合并呢?在此说明一下,本文绝不是简单地将它们做了合并,主要是修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔 ...
- Python进阶:自定义对象实现切片功能
2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...
- Python进阶:迭代器与迭代器切片
2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...
- Python 进阶_生成器 & 生成器表达式
目录 目录 相关知识点 生成器 生成器 fab 的执行过程 生成器和迭代器的区别 生成器的优势 加强的生成器特性 生成器表达式 生成器表达式样例 小结 相关知识点 Python 进阶_迭代器 & ...
- 魔法方法推开Python进阶学习大门
热爱Python Python是Guido van Rossum设计出来的让使用者觉得如沐春风的一门编程语言.2020年11月12日,64岁的Python之父宣布由于退休生活太无聊,自己决定加入Mic ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
随机推荐
- 47-准备 Overlay 网络实验环境
为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 ...
- 运维工程师必会工具(Nmap和TCPdump)
1.NMap工具 主要功能:探测主机是否在线.扫描主机开放端口和嗅探网络服务,用于网络探测和安全扫描. NMap支持很多扫描技术,例如:UDP.TCPconnect().TCPSYN(半开扫描).ft ...
- 12. java ArrayList类
一.ArrayList定义 java.util.ArrayList是大小可变的数组的实现,存储在内的数据成为元素.此类提供一些方法来操作内部存储的元素.ArrayList中可不断添加元素,其大小也 ...
- java之List接口(单列集合)
List接口概述 查询API我们可知:java.util.List 接口继承自 Collection 接口,是单列集合的一个重要分支,习惯性地会将实现了 List 接口的对 象称为List集合.在Li ...
- 关于Excel做表小知识记录
关于Excel做表小知识记录 最近使用Excel做了一系列的报表,觉得这是个很神奇的东西哈哈哈,以前我可是一想到Excel就开始头疼的人... 能用代码或者SQL语句解决的问题绝不会愿意留在Exce ...
- OpenWrite插件上架Google商店,插件安装更加容易!用户安全更有保障!
随着越来越多用户加入OpenWrite写作与快速发布文章到各大技术社区,不少非程序员童鞋经常会卡在插件安装这一步. 这是因为之前我们没有把插件上架到Google商店,所以需要用比较硬核的方式来安装. ...
- Kubernetes的ConfigMap对象使用
ConfigMap和Secret几乎一样,只是Secret会用base64加密,创建方式也可以彩yaml或者文件方式 下面演示一下通过文件创建configmap 创建配置文件my.yaml name: ...
- git worktree 使用笔记
一 worktree 的基本概念和操作 再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录 - walterlv的专栏 - CSDN博客 再也不用克隆多个仓库啦! ...
- ASP.NET MVC IOC依赖注入之Autofac系列(二)- WebForm当中应用
上一章主要介绍了Autofac在MVC当中的具体应用,本章将继续简单的介绍下Autofac在普通的WebForm当中的使用. PS:目前本人还不知道WebForm页面的构造函数要如何注入,以下在Web ...
- Vue.js2.0快速入门笔记
vue.js 解耦视图与数据,可复用的组件,前端路由,状态管理,虚拟DOM. MVVM模式:当View(视图层)变化时,会自动更新ViewModel(视图模型),View与ViewModel之间双向绑 ...