基本数据类型


字符串

1. 多行字符串

Python中不能切片操作 python什么数据类型不能切片_基础编程


2. 原始字符串

Python中不能切片操作 python什么数据类型不能切片_基础编程_02


序列共同特征
  1. 字符串
  • index访问
  • 切片
  • 拼接
  • 数乘

Python中不能切片操作 python什么数据类型不能切片_实例方法_03


2. 列表

+ index访问

  • 切片
  • 拼接
  • 数乘

Python中不能切片操作 python什么数据类型不能切片_xml_04


3. 元组

  • index访问
  • 切片
  • 拼接
  • 数乘

Python中不能切片操作 python什么数据类型不能切片_xml_05

注意:序列中不存在减运算

  1. 序列的in/len/min/max()

Python中不能切片操作 python什么数据类型不能切片_实例方法_06

注意:min/mx遵循ascll码,方法如下:

Python中不能切片操作 python什么数据类型不能切片_xml_07


集合
  • 无序,不能使用index以及切片
  • 不重复
  • 可以使用in/len/min/max
  • 特有运算符:差集、交集、并集

Python中不能切片操作 python什么数据类型不能切片_基础编程_08

注意:序列与集合为空时的表示:

Python中不能切片操作 python什么数据类型不能切片_5e_09


python基本数据类型归纳

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_10

分类:
+ 值类型:不可改变,包括str,int,float,tuple

值类型的数据不可改变表现在:数据只可读不可该,对变量重新赋值是析构原变量后生成新变量,所以从这个意义上来说,值类型数据不允许改变(简单判断方法:内存地址没变就是不可改变)

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_11

复杂情况:

Python中不能切片操作 python什么数据类型不能切片_xml_12

可以看出:a[3]是引用类型,可以改变,改变后a[3]内存地址未变,相当于未对元组元素进行改变,如果试图给a[3]赋值,即改变a[3]内存地址,则报错。所以可证整个元组不可改变

因此:元组的不可改变指:元祖起始内存ID不变,各个元素的起始ID也不可改变!!!

  • 引用类型:可改变,包括list,set,dict

Python中不能切片操作 python什么数据类型不能切片_xml_13

Python中不能切片操作 python什么数据类型不能切片_5e_14

可以看出,元素的内存地址改变了,所以可以改变。


python运算符

Python中不能切片操作 python什么数据类型不能切片_xml_15


+ 算数运算符中的Bool值

int str list tuple

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_16

set dict

Python中不能切片操作 python什么数据类型不能切片_基础编程_17

报错总结:

Python中不能切片操作 python什么数据类型不能切片_基础编程_18

  • 广义的比较运算符

str

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_19

按ascll码比较,从左往右比,字符与字符间采用与逻辑

list tuple

Python中不能切片操作 python什么数据类型不能切片_5e_20

序列数据类型军类似

注意:其他未提到的数据类型如字典等,一般不进行关系运算

  • 逻辑运算符及其扩展

特征:运算符两端为bool类型的数值或变量


Python中不能切片操作 python什么数据类型不能切片_5e_21

对于数值,true/false会自动转变为数值

  • 成员运算符

特殊地:字典

Python中不能切片操作 python什么数据类型不能切片_5e_22

  • 身份运算符

Python中不能切片操作 python什么数据类型不能切片_基础编程_23

is 判断依据为内存id

  • 位运算符

Python中不能切片操作 python什么数据类型不能切片_实例方法_24

运算优先级

Python中不能切片操作 python什么数据类型不能切片_xml_25

对象三要素:id、value、type

对应三个运算符和方法: is == isinstance


sublime快捷键

  • package control : Ctrl+shift+P
  • 运行python命令行:ctrl + ~
  • build:ctrl +B
  • 注释:Ctrl+ /
  • 缩进:Ctrl+] 撤销缩进:Ctrl+[

几个特殊用法
  • print(str,’字符’)
  • 循环+else

Python中不能切片操作 python什么数据类型不能切片_xml_26


+ 带步长的切片

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_27

注意:左闭又开
  • 带步长的range()
  • pass代码块的作用:可以代替正式代码,后想清楚再填充,并且不会报错

Python中不能切片操作 python什么数据类型不能切片_xml_28


包、模块以及导入
  • 概念

包:文件夹(通俗)

模块:某个python文件,里面包含类与函数

  • 模块导入方法
  1. import module_name [as new_name]

import只能接module_name,后面不能接package_name或者module_name.variable_name…


所以通过import module_name导入模块后,要使用variable/function/class…必须是这样的形式:module_name.variable_name/function_name/class_name

  1. from module_name import value/function/class… [as new_name]

相比于import直接导入模块,from … import 直接导入模块内元素

  1. from package_name import module_name
    从 某个包导入某个模块


from package_name import * :导入包的所有模块

  1. import package

import 直接导入包的方法不存在,此写法实际上会导入package的init模块,因为init.py本身是一个模块,他的模块名叫做package_name

  • 特殊情况举例
  1. 导入子package下的module

正确方式: ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/0BD600C824A84C26934C39EFAF9A2FF0/4145) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/AE1C0D5649A94300A06277585A52569B/4141) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/AE1C0D5649A94300A06277585A52569B/4141) 错误方式:不能在单独的import语句后直接加变量等模块内元素 ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/303D289C147945BEAE3F4656E48149D6/4158)

  1. 导入某个package所有module

![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/2FE44D6F7FE149C089C6589F835576FA/4164) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/0D9AACF006154970BA32140EE1642387/4167) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/47A5B4A7183A476EBFB952DFD10D1958/4169) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/9A8E9B0DD18F4D80A007F55E34866D81/4171)

要想利用*导入package下的modules,必须在package的init.py中用系统变量all标识。

  1. 导入某个package特定module

类似上一个,在all中标识

  1. 导入某个module

![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/D43227F960794CD3ADCB6B674482B8B0/4190)

  1. 导入某个module中特定元素

![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/D43227F960794CD3ADCB6B674482B8B0/4190)

  • all的搭配
  1. 从包中导入多个模块时(上面已经举例)
  2. 从模块中导入多个元素时

Python中不能切片操作 python什么数据类型不能切片_xml_29

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_30

注意:避免循环导入module,即module1导入module2,module2又导入module1;python有避免重复导入module的机制

  • __init__.py的作用:可以添加某个package下所有module均需要导入的其他module

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_31

Python中不能切片操作 python什么数据类型不能切片_xml_32

上述总结的作用是:在init文件中写入大量公共import,其他文件或模块直接 import package_name即可引入所有公共import ,提高工作效率。


插入:round系统函数

Python中不能切片操作 python什么数据类型不能切片_xml_33

3:小数点后三位


序列解包

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_34

在函数中的应用

Python中不能切片操作 python什么数据类型不能切片_xml_35

Python中不能切片操作 python什么数据类型不能切片_实例方法_36


函数

关键字参数与默认参数
  1. 函数申明时,默认参数必须位于形参的最右边

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_37

  1. 对于函数调用时,位置参数与关键字参数不可混搭!关键字参数全部靠右!!

Python中不能切片操作 python什么数据类型不能切片_xml_38

未完待续。。。


类与对象

一、概览

Python中不能切片操作 python什么数据类型不能切片_xml_39

二、类变量+实例变量+实例方法+构造函数
  • 含义:

类变量:不依附于某一个具体的对象,一般为类的多个实例所共有,比如,sum:对类的实例进行计数统计

实例变量:为对象所特有,如姓名等

优雅的类须严格区分二者!

实例方法:为实例服务的方法

构造函数:特殊的实例方法,为对象初始化

  • 具体区分
    1.

可见,通过系统变量dict,可以查看类或对象的属性;对象student1不含有类变量sum!!

2.

Python中不能切片操作 python什么数据类型不能切片_实例方法_40

对象既可以访问实例变量,也可以向上查找类变量;类当然可以访问类变量,但不能访问实例变量

3.

Python中不能切片操作 python什么数据类型不能切片_xml_41

实例方法访问类变量的两种方式

  1. 实例方法访问实例变量:当然
  2. 对象调用实例方法:当然;类调用实例方法也可以,但意义不大,很鸡肋,只不过python提供了这样一种灵活的使用方式

Python中不能切片操作 python什么数据类型不能切片_实例方法_42

虽然比较鸡肋,但此处解释了参数self的含义:实例方法中的self指对象,self名称可以变!

Python中不能切片操作 python什么数据类型不能切片_实例方法_43

可以看到:无报错

三、类方法与静态方法
  1. 类方法
  • 类方法定义:@classmethod

Python中不能切片操作 python什么数据类型不能切片_基础编程_44

对象可以调用类方法,不推荐;类可以调用类方法,推荐;
类方法当然能调用类变量:cls.variable,类方法不能调用实例变量;当然cls也可以换为其他符号,比如this

2.静态方法

  • 静态方法定义:@staticmethod

静态方法本质上就是个普通函数,但放在类里,可以像方法一样使用。静态方法为类与实例提供无差别的方法。


静态方法不能访问实例变量,可以通过Student.sum来访问类变量

把它当普通函数对待

四、成员可见性

1.隐藏变量 ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/DD78FFB410A44E51891DB47F68F6F28D/4423)

隐藏的变量不可以通过类、对象直接访问;但实例、类方法可以在类内部访问隐藏变量,外部类、对象可以借助各自的方法实现对隐藏变量的访问。

![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/WEBRESOURCEe95a87e1822525fe2bf0828722c5ce17/4436)

五、继承性与多态性
  • 法1

Python中不能切片操作 python什么数据类型不能切片_xml_45

Python中不能切片操作 python什么数据类型不能切片_xml_46

  • 法2

Python中不能切片操作 python什么数据类型不能切片_基础编程_47

可以看出,同名方法会被覆盖

正则表达式与JSON

一、正则概述
  • 两种实现方法

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_48

  • 思维导图

Python中不能切片操作 python什么数据类型不能切片_5e_49

Python中不能切片操作 python什么数据类型不能切片_5e_50

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_51

Python中不能切片操作 python什么数据类型不能切片_xml_52

Python中不能切片操作 python什么数据类型不能切片_xml_53

  • 用法举例

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_54

  • re模块的方法
  1. findall方法

re.findall(pattern, string, flags)

第三个参数:标志位 re.I表示忽略大小写 re.S表示元字符’.’可以指代换行符

Python中不能切片操作 python什么数据类型不能切片_基础编程_55

  1. sub方法
    re.sub(pattern, repl, string, count, flags)

repl:replace替换值,可以是函数

count:替换个数

flages:re.I、re.S

Python中不能切片操作 python什么数据类型不能切片_实例方法_56

Python中不能切片操作 python什么数据类型不能切片_xml_57

  • 参数为函数实现动态替换

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_58

注意:函数名convert1可以自定义;参数value1也可以自定义

唯一要求:自定义函数参数个数为1,函数必须返回某个替代字符串

group 为match对象的一个方法,用来取出匹配值!!

  1. match与search方法

Python中不能切片操作 python什么数据类型不能切片_Python中不能切片操作_59

可以说findall与sub是search函数的高级封装,封装了一个一个search的过程

注意group方法的使用;span方法会返回匹配值在字符串中的index!

  • group方法使用

Python中不能切片操作 python什么数据类型不能切片_实例方法_60

直接使用findall更优

  • 坑:正则最好在字符串前加r

Python中不能切片操作 python什么数据类型不能切片_5e_61

findall()正则中有分组就会只返回分组!!这种情况下使用search+group()可能更灵活