Python3基础

一、列表和元组
1、什么是列表和元组
这两个都是一个可以放置任何数据类型的有序集合
列表是动态的,元组是静态的。
2、列表和元组支持负数索引
3、列表和元组支持切片操作

4、几个常用内置函数

二、字典和集合
1、字典的创建和集合的创建

2、字典和集合的访问
  • 字典:直接索引键,或者使用get()函数
  • 集合:使用 xxx in setName的方式判断
3、增删改操作

4、字典和集合的工作原理
①内部结构
字典和集合的内部都是一张哈希表
对于字典而言,这张表存储了hash、键、值这三个元素
对集合而言,hash、单一元素这两个
②内部优化
老版本Python的哈希表结构如下

随着哈希表的扩张,它会变得越来越稀疏,如下图

这样的话很非常浪费存储空间,为了提高存储空间的利用率,现在的哈希表除了字典本身的结构,会把索引和哈希值、键、值单独分开

 

具体的例子:

None代表不存在的
③几个操作的原理
a. 插入:
每次向字典或集合插入一个元素时,首先会计算键的hash(key),再和mask = PyDicMinSize -1 做与操作,计算这个元素应该插入哈希表的位置index = hash(key) & mask。
如果哈希表中这个位置是空的,那么这个元素就会被插入
如果不为空 ,比较两个元素的哈希值和键是否相等,相等就替换值;不等的话,其实就是一个哈希冲突,Python会继续寻找表中空余的位置,直到找到位置为止。
b. 查找
跟插入前面的类似。
c. 删除
先找到前面的值,然后Python会暂时对这个位置的元素赋予一个特殊的值。等到重新调整哈希表大小时,将其删除。
④剩余扩充
哈希冲突是降低字典和集合操作的速度。为此,字典和集合的哈希表中,保证留有1/3的剩余空间。当剩余空间小于1/3时,Python会重新获取更大的内存空间,扩充哈希表。同时,会重新排放表内所有元素的位置。
三、字符串
1、字符串基础
①单引号、双引号、三引号的字符串一样,没有区别
   三引号多用于函数的注释
②一些转义字符
2、字符串常用操作
把字符串想成一个由单个字符组成的数组,支持索引、切片、遍历等操作
不过字符串是不可变的
①string.split(separator)函数
把字符串按照separator分割成子字符串,并返回一个分割后子字符串组合的列表
②string.strip(str),表示去掉首尾的str字符
③string.lstrip(str),表示只去掉开头的str字符串
④string.rstrip(str),表示只去掉尾部str字符串
3、字符串的格式化
string.format()
用在输入、日志记录等场景
四、Python输入与输出
1、输入输出基础

input()函数的输入类型永远是字符串类型(str)
2、JSON处理

 

json.dumps()函数,接受Python的基本数据类型,然后将其序列化为String
json.loads()函数,接受一个合法的字符串,然后将其反序列化为Python的基本类型
五、条件与循环
1、条件语句
Python不支持Switch语句,当存在多个条件判断时,需要使用多个else if进行实现

2、循环语句
①字典的三种迭代

字典中同时遍历键和值

②条件与循环复用
常规操作

简洁操作

如果没有else则写成

 

六、异常处理
1、错误与异常
错误:一般是代码不符合编程规范,无法被识别与执行
异常:程序的语法正确,可以执行,但是在执行过程中遇到了错误,抛出了异常
2、如何处理异常
使用try、catch、finally

except满足的情况先,会直接退出,不再匹配其他except
而finally,不管前面except满不满足,都会执行
3、什么时候使用异常处理
通常用在不确定某段代码是否成功执行,也无法轻易判断的情况下,比如数据库的连接、读取等等。
七、自定义函数
1、什么是函数?
函数就是为了实现某一个功能的代码段,写好之后,可以重复利用。

与其他编译语言不同的是,def是可执行语句。
这意味着当程序调用函数时,def语句才会创建一个新的函数对象,并赋予其名字。
Python函数的参数可以设定默认值

 

2、函数的嵌套
①嵌套的作用:
  • 函数的嵌套能够保证内部函数的隐私。
    • 内部函数只能被外部函数调用和访问,不会暴露在全局作用域。

这里的get_DB_configuration便是内部函数,它无法在connect_DB()函数以外被单独调用
  • 合理使用嵌套函数,可以提高运行效率
3、闭包
  • 可以简化程序的复杂度,提高可读性
八、匿名函数
1、什么是匿名函数?

 

2、几个lambda表达式应用的场景



 

3、函数式编程
所谓函数式编程,是指代码中每一块都是不可变的。
Python主要提供了几个函数map()、filter()、reduce()、配合lambda一起使用。