python基础

python基础知识清单

  • python可以清空列表
  • 嵌套列表
  • range遍历数字序列,以合法的索引生成长度为*的序列
    • range也可以以另一个数字开头,或者以指定的幅度增加(甚至是负数;有时这也被叫做 '步进')
    • python默认会换行,不需要换行在变量末尾加end=" ";
    • 元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
    • 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
      • 以上实例元组被删除后,输出变量会有异常信息,输出如下所示:
      • 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
      • 字典
        • 修改字典,向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
      • pycharm:Ctrl+shift+- 代码全部折叠,Ctrl+shift+代码全部展开
      • 创建一个新的python文件:Alt+insert;运行:shift+F10,在中文状态下,Ctrl+shift+b(调出win表情包) 快速查看文档:Ctrl + Q;代码格式化:Ctrl + Alt + L;调试:Shift + F9;文件中用法高亮显示:Ctrl + Shift + F7;显示用法:Ctrl + Alt + F7;全局查找/全局替换:Ctrl + Shift + F/Ctrl + Shift + R;显示错误描述或警告信息:Ctrl + F1;快速查看文档:Ctrl + Q;自动生成代码:Alt + Insert;Ctrl + F /R : 当前文件查找/替换
    • 字符型:%.2f保留两位小数
    • 格式化字符串除了%s,还有f{'表达式'},
    • 在python中,用户
    • 循环:当内部循环执行完成之后,再执行下一次外部循环的条件判断,循环的执行流程:
      • 字符串单双三引号都可以,三引号的字符串支持回车换行,单双引号换行时后面会加上 ,
      • 列表可以一次性储存多个数据,且可以为不同数据类型。
      • 列表的循环遍历:依次打印列表中的各个数据,while 、for
      • 列表的常用:增删改查(index()、count()、in、not in、{append():列表追加数据,如果append()追加的数据是⼀个序列,则追加整个序列到列表;extend():列表结尾追加数据,如果数据是⼀个序列,则将这个序列的数据逐⼀添加到列表;insert():指定位置新增数据,列表序列.insert(位置下标, 数据)。} {del()  删除列表、 删除指定数据。pop():删除指定下标的数据(默认为最后⼀个),并返回该数据,语法: 列表序列.pop(下标); remove():移除列表中某个数据的第⼀个匹配项,语法:列表序列.remove(数据)} 逆置:reverse(),排序:sort(),函数:copy() 列表嵌套
    • ⼀个元组可以存储多个数据,元组内的数据是不能修改的。支持查找,为不可变类型,但元组里嵌套的列表则可以修改。 例如保存身份证
    • 字典里的数据以键值对形式出现,字典数据和数据顺序没有关系,字典不支持下标,后期数据无论如何变化,只需按照对应的名字查找数据即可
      • 一般称冒号前面的为键(key),冒号后面的为值,称value
      • 字典常见操作:增,写法:字典序列[key]=值;删:del(),删除字典或删除字典中指定键值对;清空列表:clear();改:字典序列[key] = 值(如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对。);查:key值查找(如果当前查找的key存在,则返回对应的值;否则则报错;get() ,语法:字典序列.get(key, 默认值))
      • keys()、values()、items()
      • 字典的遍历:遍历字典的key、遍历字典的value、遍历字典的元素、遍历字典的键值对
      • 定义字典:dict1={'name':'python', 'age':30}、dict2={}、dict3=dict()
      • 增/改:字典序列[key]=值
      • 查找
        • 字典序列[key]
        • keys()
        • values()
        • items()
      • 集合:创建集合使⽤ {} 或 set() , 但是如果要创建空集合只能使⽤ set() ,因为 {} ⽤来创建空字典。集合无序,无下标。集合可以去掉重复数据
        • 集合常见操作方法
          • 创建集合
            • 有数据集合:s1 = {数据1, 数据2, ...} 
            • 无数据集合:s1 = set()
          • 增加数据:add(),因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进⾏任何操 作。update(), 追加的数据是序列。
          • 删除数据:remove(),删除集合中的指定数据,如果数据不存在则报错。discard(),删除集合中的指定数据,如果数据不存在也不会报错。pop(),随机删除集合中的某个数据,并返回这个数据。
          • 查找数据:in:判断数据在集合序列;not in:判断数据不在集合序列
        • 公共操作
          • 运算符
          • 公共方法(注意:range()生成的序列不包含end数字)
            •  enumerate() ,语法:enumerate(可遍历对象, start=0);start参数⽤来设置遍历数据的下标的起始值,默认为0。 
            • 容器类型转换:(注意: 集合可以快速完成列表去重;集合不⽀持下标)
              • tuple():将某个序列转换成元组,例如列表、字典等
              • list()::将某个序列转换成列表,例如元组、字典等
              • set():将某个序列转换成集合,例如列表、元组等
          • 推导式:
            • 列表推导式:化简代码:创建或者控制有规律的列表。列表推导式⼜叫列表⽣成式。
              • while循环创建有规律的列表
              • for循环创建有规律的列表
            • 列表推导式实现
              • 带if的列表推导式
              •  多个for循环实现列表推导式(等同于for循环嵌套)
              • 字典推导式:快速合并列表为字典或提取字典中⽬标数据。
                • 快速体验:1. 创建⼀个字典:字典key是1-5数字,value是这个数字的2次⽅。
                • 总结:
                  • 1. 如果两个列表数据个数相同,len统计任何一个列表的长度都可以
                  • 2. 如果两个列表数据个数不同,len统计数据多的列表数据个数会报错;len统计数据少的列表数据个数不会报错
                • 集合推导式:
              • 推导式总结:
                • 推导式的作⽤:简化代码
                • 推导式写法
              • 函数
                • 函数的作用:函数就是将⼀段具有独⽴功能的代码块 整合到⼀个整体并命名,在需要的位置调⽤这个名称即可完成对 应的需求。函数在开发过程中,可以更⾼效的实现代码重⽤。
                  • 封装代码,高效的代码重用
                • 函数的使用步骤:
                  • 1.定义函数
                  • 调用函数:函数名(参数)
                • 1
                  • 函数的注意事项:
                    • 1. 函数先定义后调用,如果先调用会报错
                    • 2. 如果没有调用函数,函数里面的代码不会执行
                    • 3. 函数执行流程: 当调用函数的时候,解释器回到定义函数的地方去执行下方缩进的代码,当这些代码执行完,回到调用函数的地方继续向下执行 定义函数的时候,函数体内部缩进的代码并没有执行
                • 函数参数:作用:使函数变得更灵活
                  • return:返回结果到函数调用的地方,语法:return 表达式
                • 函数的说明文档:定义函数的第一行缩进的多行注释
                  • 1
                  • 查看函数的说明文档:help(函数名)
                  • 函数说明文档的高级使用
                • 函数嵌套调用:是⼀个函数⾥⾯⼜调⽤了另外⼀个函数。函数调用执行定义函数缩进的代码
              • 函数二
                • 变量作用域:
                  • 局部变量:定义在函数体内部的变量,之在函数体内部生效
                    • 作用:在函数内部,临时保存数据,即当函数调用完成之后,则销毁局部变量。可在函数内部访问,在函数外部访问会报错
                  • 全局变量:在函数体内、外都能生效的变量
                  • 修改全局变量:在函数体内修改全局变量:先global声明a为全局变量,然后再变量重新赋值
                  • 多函数程序执行流程
                  • 函数返回值作为参数传递:
                    • 1.保存函数的返回值
                    • 将函数返回值所在变量作为参数传递到函数中
                    • 函数的多个返回值:语法:return a,b 默认的是返回是元组,(a,b)
                      • return 后面可以连接列表、元组或字典,以返回多个值
                  • 函数参数
                    • 位置参数:调用函数时根据函数定义的参数位置来传递参数。注意:传递和定义参数的顺序及个数必须一致
                    • 关键字参数:函数调用,通过“键=值”形式加以指定。可以让函数更加清晰、容易使⽤,同时也清除了参数的顺序需 求。
                      • 注意::函数调⽤时,如果有位置参数时,位置参数必须在关键字参数的前⾯,但关键字参数之间不存在 先后顺序。
                    • 缺省参数:也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值,注意:所有位置参数必须出现在默认参数前,包括函数定义和调⽤。
                      • 注意:函数调⽤时,如果为缺省参数传值则修改默认参数值;否则使⽤这个默认值。
                    • 不定长参数:也叫可变参数。⽤于不确定调⽤的时候会传递多少个参数(不传参也可以)的场景。此时,可 ⽤包裹(packing)位置参数,或者包裹关键字参数,来进⾏参数传递,会显得⾮常⽅便。
                      • 包裹位置传递:
                        • 注意::传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为⼀个元组(tuple), args是元组类型,这就是包裹位置传递。
                      • 包裹关键字传递:返回的是一个字典
                      • 综上:⽆论是包裹位置传递还是包裹关键字传递,都是⼀个组包的过程。
                    • 拆包:
                      • 拆包元组:
                      • 拆包字典:按key查找
                  • 交换变量的值:
                    • 方法一:定义中间的第三变量,为了临时存储a或b的数据
                    • 方法二:将、a,b分别赋值,再将a,b交换变量,然后打印出来
                  • 了解引用
                    • 在python中,值是靠引⽤来传递来的。
                    • 我们可以⽤ id() 来判断两个变量是否为同⼀个值的引⽤。 我们可以将id值理解为那块内存的地址标 识。
                    • int为不可变类型,修改数据后ID改变。列表为可变类型,修改数据后ID不变。
                    • 因为修改了a的数据,内存要开辟另外一份内存取存储2,id检测a和b的地址不同
                  • 引用当做实参:
                    •  int:计算前后id值不同
                    •  列表:计算前后id值相同
                • 可变类型与不可变类型是指:数据能够直接进⾏修改,如果能直接修改那么就是可变,否则是不可 变.
                  • 可变类型:列表、字典、集合
                  • 不可变类型:整型、浮点数、字符串、元组
              • 函数加强:
                • 制作学员管理系统
                • 递归:
                  • 应用场景:要遍历⼀个⽂件夹下⾯所有的⽂件,通常会使⽤递归来实现;
                  • 递归的特点:函数内部⾃⼰调⽤⾃⼰;必须有出⼝。
                  • 如果没有出口,报错:超出最大递归深度
                • lambda:也叫匿名函数
                  • 应用场景:如果⼀个函数有⼀个返回值,并且只有⼀句代码,可以使⽤ lambda简化。
                  • 语法:lambda 参数列表 : 表达式
                    • 注意:lambda表达式的参数可有可⽆,函数的参数在lambda表达式中完全适⽤。 lambda函数能接收任何数量的参数但只能返回⼀个表达式的值
                    • 例子:
                    • lambda实例:计算两个数之和
                  • lambda的参数形式:
                    • 无参数:
                    • 一个参数:
                    • 默认参数:(缺省参数)
                    • 可变参数:**args
                    • 可变参数:**kwargs(返回的是字典)
                  • lambda的应用:
                • 列表数据按字典key的值排序
              • 高阶函数:把函数作为参数传⼊
                • abs() 函数:对数字求绝对值计算。
                • round()函数:对数字四舍五入
                • 高阶函数实验:
                • 内置的高阶函数:
                  • map()
                    • map(func, list),将传⼊的函数变量func作⽤到lst变量的每个元素中,并将结果组成新的列表(Python2)/ 迭代器(Python3)返回。
                    • reduce():功能函数每次计算的结果和序列的下一个数据作累计计算。reduce(func(x,y),list),其中func必须有两个参数。
                    • filter():filter(func, lst)函数⽤于过滤序列, 过滤掉不符合条件的元素, 返回⼀个 filter 对象,。如果要转换为列表, 可以使⽤ list() 来转换。
              • 文件
                • 把⼀些内容(数据)存储存放起来,可以让程序下⼀次执⾏的时候直接使 ⽤,⽽不必重新制作⼀份,省时省⼒。
                • 文件的基本操作:注意:可以只打开和关闭⽂件,不进⾏任何读写操作。
                  • 1.打开文件(r:只读,如果文件不存在,会报错。不支持写作操作,表示只读)
                  • 2.读写等操作(w:只写,如果文件不存在,新建文件;执行写入,会覆盖原有内容)
                  • 3.关闭文件
                  • a:追加,如果文件不存在,新建文件;在原有内容基础上,追加新内容
                  • 访问模式参数可以省略, 如果省略表示访问模式为r
                • 读取函数:
                  • read():
                  • 文件内容如果换行,底层有 ,会有字节占位,导致read书写参数读取出来的眼睛看到的个数和参数值不匹配。read不写参数表示读取所有;
                  • readlines():以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏ 的数据为⼀个元素。
                  • readline():⼀次读取⼀⾏内容。
                  • seek():⽤来移动⽂件指针。
                    • 语法:⽂件对象.seek(偏移量, 起始位置) 0开头1当前2结尾
                  • 文件备份:
                    • 步骤:
                  • 文件和文件夹的操作
                    • 在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,具体步骤如下:
                      • 1. 导⼊os模块:import os
                      • 2. 使⽤ os 模块相关功能:os.函数名() 
                    • ⽂件重命名:os.rename(⽬标⽂件名, 新⽂件名)
                    • 删除⽂件:os.remove(⽬标⽂件名)
                    •  创建⽂件夹:os.mkdir(⽂件夹名字)
                    •  删除⽂件夹:os.rmdir(⽂件夹名字)
                    •  获取当前⽬录: os.getcwd()
                    •  改变默认⽬录 :os.chdir(⽬录)
                    • 获取⽬录列表 :os.listdir(⽬录)
              • 总结
        • 面向对象
          • 类是对⼀系列具有相同特征和⾏为的事物的统称,是⼀个抽象的概念,不是真实存在的事物。对象是类创建出来的真实存在的事物,例如:洗⾐机。
            • 特征即是属性
            • ⾏为即是⽅法
          • 创建对象 语法:对象名 = 类名()
          • self:是调⽤该函数的对象。
          • 一个类可以创建多个对象,当对象调用函数时,self地址不相同
          • 添加和获取对象属性(对象属性既可以在类外⾯添加和获取,也能在类⾥⾯添加和获取。)
            • 在类外面添加对象属性 语法:对象名.属性名 = 值
            •  类外⾯获取对象属性 语法:对象名.属性名
              • 体验:
              • 在类里面获取对象属性 语法:self.属性名
                • 体验
            • 魔法方法
              • __init__ () 方法 作用:初始化对象
                • __init__() ⽅法,在创建⼀个对象时默认被调⽤,不需要⼿动调⽤
                • __init__(self) 中的self参数,不需要开发者传递,python解释器会⾃动把当前的对象引 ⽤传递过去。
                • 带参数的__init__():一个类创建多个对象,可以通过传参对不同的对象设置不同的初始化值
            • __str__():会打印从 在这个⽅法中 return 的数据。
            • __del__():当删除对象时,python解释器也会默认调⽤ __del__() ⽅法。
            • 魔法方法
      • 继承:是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法
        • 注意:在Python中,所有类默认继承object类,object类是顶级类或基类;其他⼦类叫做派⽣类。
        • 多继承:是⼀个类同时继承了多个⽗类
          • 注意:当⼀个类有多个⽗类的时候,默认使⽤第⼀个⽗类的同名属性和⽅法。
        • ⼦类重写⽗类同名⽅法和属性:如果⼦类和⽗类具有同名属性和⽅法,子类创建对象调用属性和方法,调用的是子类里面同名的属性和方法
        • 显示类的继承关系:语法:print(类名._mro_)
        • 子类调⽤⽗类的同名⽅法和属性
        • 多层继承
        • super:调用父类方法
          • 有参数: super(当前类名, self).函数() 
          • 无参数: super().函数() 
        • 注意:使⽤super() 可以⾃动查找⽗类。调⽤顺序遵循 __mro__ 类属性的顺序。⽐较适合单继承 使⽤。
        • 私有权限:
          • 定义私有属性和⽅法:在属性名和⽅法名 前⾯ 加上两个下划线 __。
            • 作用:即设置某个实例属性或实例⽅法不继承给⼦类。
            • 注意:私有属性和私有⽅法只能在类⾥⾯访问和修改。
          • 获取和修改私有属性
      • 面向对象
        • 多态:是指⼀类事物有多种形态,(⼀个抽象类有多个⼦类,因⽽多态的概念依赖于继承)。 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以 产⽣不同的执⾏结果
        • 实现多态的步骤:
        • 类属性和实例属性
          • 类属性
            • 设置和访问类属性
            • 修改类属性:类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了 ⼀个实例属性。
          • 实例属性:实例属性不能通过类访问
        • 类方法和静态方法
          • 类方法
          • 静态方法
          • 异常
            • 写法
            • 异常的类型:在控制台报错的最后一句
            • 捕获异常
            • 异常的else : else表示的是如果没有异常要执⾏的代码。
            • 异常的finally:finally表示的是⽆论是否异常都要执⾏的代码,例如关闭⽂件。
            • 扩展命令提示符运行py文件
            • 异常的传递
            • 自定义异常
            • 总结
原文地址:https://www.cnblogs.com/JunCen/p/12519920.html