python的基础知识

目录

  • 一、数据类型
    • 1、列表
    • 2、字典
    • 3、元组
    • 4、集合
    • 5、字符串
  • 二、函数
    • 1、函数定义
    • 2、异常处理机制
  • 三、类与对象
  • 四、封装,继承,多态
  • 五、模块

一、数据类型

1、列表

可变
性质:可以存储重复数据;元素索引从0开始

基本操作类型:

  • 创建使用中括号[ ];调用内置函数list()
  • 查询元素的索引列表名.index(元素),或者列表名.index(元素,位置1,位置2) 不包含位置2;返回重复第一个元素的索引

  • 查询元素列表名[索引] ,可以正向从0n-1**或者**负向从-1-n

  • 切片列表名[start:end:步长],步长可正可负,当步长为-1时,可以将列表逆序显示

  • 遍历for i in 列表名:

  • 添加元素列表名.append():末尾添加一个元素

  • 扩展列表列表名.extend():末尾添加其他列表

  • 任意添加列表名.insert():任意位置添加元素

  • 切片添加:通过切片列表名[start:end:步长] 操作,将添加的部分替换原来的部分

  • 删除元素:remove():删除一个元素

  • 删除索引元素pop()默认删除最后一个元素

  • 切片删除:若产生新的列表,则列表名[start:end:步长]=[ ],赋予空值

  • 清空列表列表名.clear()

  • 删除列表del 列表名

  • 修改元素直接重新赋值列表名[索引]=修改值

  • *切片修改:列表名[start:end:步长]=[修改值]

  • 列表排序列表名.sort()函数,默认为升序*,reverse=True为降序;reverse=False为升序,内置函数sorted()函数,产生一个新的列表,默认为升序;reverse=True为降序

  • 列表生成式列表名 = [i元素表达式 for i in range()],针对于有规律*的列表

2、字典

可变
键值对存储数据,字典名 = {‘键1’:‘字符值1,‘键2’:数字值2}

基本操作类型:

  • 创建使用花括号,空字典:{ };使用内置函数dict(键1=‘字符值1’,键2=数字值2)

  • 字典元素的取值

    1. 第一种:字典名[‘键名’]

    2. 第二种:get()方法,字典名.get([‘键名’),当查找的不在时,value提供为一个默认值

  • 判断元素in或者not in:键名 in 字典名

  • 删除del 字典名[‘键名’]clear()

  • 新增和修改元素字典名[‘键名’]=值

  • 获取字典视图keys()values()items(),得到的值可以使用列表list()来表示

  • 字典元素的遍历for i in 字典名:获取的是键名

  • 字典生成式:将两个列表合并成一个字典:使用内置函数zip() 将两个列表进行打包在一起,如:字典名 = {i:j for i,j in zip(list1,;list2)}

3、元组

不可变,
(元素1,元素2,元素3)

基本操作类型:

  • 创建

    1. 使用()元组名 = ( ),当只有一个元素时,必须加上逗号(‘元素’,)

    2. 使用内置函数tuple(),当只有一个元素时,tuple(‘字符元素‘),并且拆分输出;当存在多个元素时,tuple((‘字符元素’,数字元素))

  • 取值元组名[索引]

  • 遍历for i in 元组名

4、集合

可变{元素1,元素2}
没有值的字典,元素不可重复,无序

基本操作类型:

  • 创建

    1. 第一种:直接创建:s={’元素1‘,’元素2‘}

    2. 第二种:使用内置函数set(),可将列表、字典、元组转变为集合,set([1,3,4])

  • 新增

    1. *集合名.add()**:一次增加一个元素;
    2. 集合名.updata():一次增加几个元素,以列表,字典和元组的形式
  • 删除

    1. remove(删除元素):一次删除一个指定元素且抛出异常;
    2. discard(删除元素):一次删除指定元素且不抛出异常;
    3. pop():删除任意元素
  • 集合之间的关系:

    1. 第一种:两个是否相等:is或者not is

    2. 第二种:是否是子集:集合1.issubset(集合2)

    3. 第三种:是否是超集:集合1.issuperset(集合2)

    4. 第四种:是否是交集:集合1.isdisjoint(集合2)

  • 集合的数据操作:

    1. 第一种:交集:intersection()与 & 等价

    2. 第二种:并集:union()与 | 等价

    3. 第三种:差集:difference()与 - 等价,得到集合1的差集

    4. 第四种:对称差集:symme_difference()与 ^ 等价,得到两个集合的差集

  • 集合生成式集合名 = { i的表达式 for i in range(1,10)}

5、字符串

字符串的操作

  • 查询操作

    1. 字符串.index(’子串‘)查找子串第一次出现的位置,抛出异常

    2. rindex()查找子串最后一次出现的位置,抛出异常

    3. 字符串.find(’子串‘)查找子串第一次出现的位置,不存在返回-1

    4. rfind()查找子串最后一次出现的位置,不存在返回-1

  • 字符串大小写转换

    1. 字符串.upper()把字符串中所有的字符转换为大写

    2. lower()把字符串中转换为小写

    3. swapcase()把大写转换为小写,把小写转换为大写

    4. capitalize()把第一个字符转换为大写,其他变小写

    5. title()把每个单词第一个转变为大写,其他变小写

  • 字符串对齐操作

    1. center(指定宽度,‘填充内容’)居中对齐,默认为空格

    2. ljust()左对齐

    3. rjust()右对齐

    4. zfill(指定长度)右对齐,左边用0填充,只接受一个参数

  • 字符串的分割

    1. 字符串.split(sep=,maxsplit=):从左边分割,默认是分隔符是空格,且使用参数sep指定分割符,maxsplit指定 最大分割数,返回的是列表

    2. rsplit():从右边分割,默认是分隔符是空格,且使用参数sep指定分割符,maxsplit指定最大分割数,返回的是列表

  • 字符串判断

    1. 字符串.isidentifier():时候合法的标识符,返回布尔值

    2. isspace():是否全部由空白字符组成(回车,换行,tap)

    3. isalpha():是否由字母组成

    4. isdecimal():是否由十进制数字组成

    5. isnumeric():是否由数字组成(中文数字或者罗马数字)

    6. isalnum():是否由数字和字母组成

  • 字符串替换字符串.replace(被替换字符,替换字符,替换次数),默认替换一次

  • 字符串合并‘合并符’.join(字符串),将列表或者元组的字符串合并程一个字符串

  • 字符串比较

    1. 直接使用>,<,<=,>=,来进行比较

    2. == 是比较字符串值是否相等

    3. is是比较字符串id是否相等

  • 字符串切片操作字符串[start:end:步长],与列表操作相同,默认从0到最后一个元素,步长为1,当步长为-1时,为逆序

  • 字符串格式化

    1. 第一种:使用%作为占位符,类似C语言,例:‘我叫%s,今年%d岁’ % (name,age),%f,%d,%s(字符串)

    2. 第二种:使用{ }作为占位符,例:‘我叫{0},今年{1}岁’.format(name,age)

    3. 第三种:

      • 使用 f{string} 作为占位符,例:f’我叫{name},今年{age}岁’
      • %:宽度:%10d精度:%.3f保留3位小数
      • {}:宽度:{:10f}精度:{:.3f}
  • 字符串编码字符串.encode(encoding=’ '),GBK表示一个中文占两个字节,UTF-8表示一个中文占三个字节

  • 字符串解码byte= 字符串.encode(encoding=’ ‘) byte.decode(encoding=’ ')


二、函数

1、函数定义

  • 函数创建
def 函数名(输入参数):
		函数体
	return 返回值
  • 函数调用:函数名(参数)

  • 函数的返回值:如果没有返回值,可以省略不写:返回值是1个,直接返回原类型;返回值是多个,返回的结果为元组

  • 函数的参数:默认参数:当只有一个调用参数,函数参数采用默认;当存在调用参数,则直接覆盖

  • 可变参数

    1. 事先无法确定的位置参数个数,采用可变的位置参数:使用定义个数可变的位置参数,结果为一个元组def 函数( * args)

    2. 事先无法确定的关键字参数个数,采用可变的关键字参数:使用定义个数可变的位置参数,结果为一个字典: def 函数( ** args)

    3. 在一个函数的定义过程中,要求个数可变的位置参数,要在关键字参数前面

    4. 在函数调用时:实参为列表时,采用位置实参*;为字典时,采用关键字实参**

    5. 在函数定义时,形参的存在位置和关键字参数,其中(a,b, * ,c)表示*之后的c只能是关键字参数

    6. 一共有:(a,b, * ,c,d, ** args);( * args, ** args);(a,b=10, * args, ** args)

2、异常处理机制

异常处理机制

  1. 第一种:try: except 异常机制
  2. 第二种:多个except:try: except 异常机制1: except 异常机制2:except baseException异常是先子类后父类,其中别名:baseException最基础错误,可以使用在未知错误中
  3. 第三种:try: except 异常机制: else当try中没有异常,执行else,若有,执行except异常
  4. 第四种:try: except 异常机制: else: finally:finally模块无论是否异常都会被执行

常见异常

  1. zero属于数学异常
  2. indexError索引异常
  3. keyError键异常
  4. nameError未定义异常
  5. syntaxError语法错误
  6. ValueError传入无效参数
  7. Traceback模块打印具体异常错误内容

三、类与对象

  • class 类名 : pass : 类名首字母大写,其余都是小写

  • 类的组成:

  1. 类属性:在类中定义属性,

  2. 实例方法def 方法名(self):被所有的对象所共享

  3. 静态方法@staticmethod def 方法名():使用类名直接访问

  4. 类方法@classmethod def 方法名(cls):使用类名直接访问

  5. 初始化方法:def __ init __(self):

  • 对象的创建实例名 = 类名()

  • 有两种调用:

    1. 第一种:对象名.方法名()

    2. 第二种:类名.方法名(对象):相当于调用实例方法

  • 动态绑定属性和方法:

    1. 动态属性:在类之外在定义属性:
    2. 动态方法:在类之外定义方法:也叫做函数

四、封装,继承,多态

  • *封装:属性和方法包装到类对象中,类中属性不希望在外类使用,在属性前面加上__,但是通过_类名 __ 属性名来实现访问

  • *继承class 子类类名(父类1,父类2):,默认继承object类,object类是所有类的父类可通过dir()参看所有属性,其中_str_()方法,用于返回对象描述参看对象信息,经常用于print()方法的改写

  • 方法重写:子类重写后可以通过super().方法名()调用父类被重写的方法

  • 多态:未知引用对象的类型,通过运行过程中变量所引用对象的类型,动态决定哪个对象中的方法

  • 特殊属性: __ dict __:获得属性和方法的字典

  • 特殊方法:

    1. __ len __ ():重写让内置函数len()的参数长度

    2. __ add __ ():重写让自定义对象具有+功能

    3. __ new __():创建对象

    4. __ init __():对创建对象初始化

变量的赋值:值1=值2,形成两个变量,但是指向同一对象

浅拷贝:子对象内容不拷贝,源对象与拷贝对象引用一个子对象

深拷贝:子对象内容拷贝,源对象与拷贝对象引用不同的子对象

五、模块

python由多个模块进行组合,再由包进行组合

  • *导入模块
    import 模块名 as 别名
    from 模块名 import 函数/类/变量

  • 导入自定义模块:
    from 自定义模块名 import 自定义函数/类/变量
    文件夹右键选择Mark Directory as

以主程序方式运行:if __ name __ == ’ __ main __ ': 该语句表明在只有在模块中才执行出结果

  • 导入包:
  • 第一种:import 包\模块 as 别名 形式:只能跟着包名或者模块名
  • 第二种:from 包名 import 模块from 包名.模块 import 函数/变量/类:可以导入包,函数,模块,变量

常见的内置模块

  • sys:与环境操作相关的标准库

  • time:与时间有关

  • os:访问操作系统服务

  • calendar:与日期相关

  • urllib:读取来自网上服务器

  • json:使用JSON序列化的反序列化对象

  • re:字符串正则表达式匹配和替换

  • math:算术运算

  • decimal:精确控制运算精度、有效数位和四舍五入

  • logging:提供灵活事件、错误、警告的日志信息

你可能感兴趣的:(python,算法)