python学习
1.1python解释器
作用:翻译代码,提交给计算机运行
二、基础语法
2.1、字面量
定义:固定的值,区别于变量。如整数,小数,字符串…
2.2、注释
单行注释:#
多行注释:
2.3、变量
定义:变量名称 = 变量的值
2.4、数据类型
type():可以查看数据的类型
2.5、数据类型转换
原因:从文件中读取的数字,默认是字符串,我们需要转换成数字类型;input()语句,默认结果是字符串,若需要数字也需要转换等等。
注:浮点数转整数会丢失精度。
2.6、标识符
- 定义:在编程的时候所使用的一系列名字,用于给变量、类、方法等命名,用来做内容的标识。
- 规则:
1内容限定:字母,数字,下划线
2大小写敏感
3不可使用关键字 - 变量命名规范:
1多字母使用下划线
2英文字母全小写
2.7、运算符
- 算数运算符:
//:整除,9//2为4
%:取余
:指数,22为4 - 复合赋值运算符:
+=、-=、*=、/=、//=、%=、**= - 比较运算符:
2.8、字符串扩展
2.8.1、字符串的三种定义方式
问:如果字符串内部本身包含单引号,双引号呢?
2.8.2、字符串拼接
使用“+”号连接字符串变量或字符串字面量即可。
注:无法和非字符串类型进行拼接,会报错。
2.8.3、字符串格式化
问题:
- 常用占位符:
1字符串%s
2整数%d
3浮点数%f
2.8.4、格式化的精度控制
2.8.5、快速字符串格式化
作用:不理会类型,不做精度控制。适合对没有精度要求的快速使用
2.8.6、input函数
- input()语句的功能是,获取键盘输入的数据
- 可以使用:input(提示信息),用以在使用者输入内容之前显示提示信息。
- 要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型
三、python判断语句
3.1、条件判断语句
3.2、if-else语句
3.3、if-elif-else语句
3.4、判断语句的嵌套
嵌套的关键在于空格缩进。
四、循环语句
4.1、while循环基础语法
4.2、while循环的嵌套
4.3、for循环基础语法
4.4.1、range语句
4.4.2、变量作用域
4.4、for循环的嵌套应用
4.5、循环中断
4.5.1、break
直接结束所在循环
4.5.2、continue
中断本次循环,直接进入下一次循环
五、函数
5.1、函数的定义
- 注:参数或返回值不需要可以省略。
5.2、None的应用场景
相当于java中的null,
5.3、函数说明文档
5.4、函数的嵌套
5.5、变量的作用域
5.5.1、局部变量
定义在函数体内的变量,只在函数体内生效(注意区别for函数的变量作用域)
5.5.2、全局变量
5.5.3、global关键字
在函数内部声明变量为全局变量
六、数据容器
作用:可以容纳多份数据的数据类型,可以容纳任意数据类型的数据(和java进行区别,数据容器什么类型都能一起放入)。类似java中的集合、数组。
分类:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict
6.1、数据容器:List(列表)
6.1.1、列表的索引
- 正向索引
- 方向索引
- 嵌套列表下的索引
6.1.2、列表的方法
python中函数和方法的区别在于:方法是函数作为类的成员。
- 查找某元素的下标
- 修改特定位置的索引值
- 插入元素
- 追加元素1
- 追加元素2
- 删除元素
- 删除某元素在列表中的第一个匹配项
- 清空列表内容
- 统计某元素在列表中的数量
- 统计列表内元素数量
6.1.3、List(列表)的遍历
- while循环
- for循环
6.2、数据容器:tuple(元组)
定义:元组一旦定义完成,就不可修改。适用于希望在程序中封装数据,又不希望封装的数据被篡改。
特点:不可以修改
6.2.1、元组的相关操作
- 注:
6.2.2、元组的遍历
6.3、数据容器:str(字符串)
字符串是字符的容器,一个字符串可以存放任意数量的字符。
特点:只可以存储字符串,不可以修改
6.3.1、字符串的索引
6.3.2、字符串的常用操作
- 查找特定字符串的下标索引值
- 字符串的替换
- 字符串的分割
- 字符串的规整操作(去掉前后空格)
- 字符串的规整操作(去前后指定字符串)
- 统计字符串中某字符串的出现次数
- 统计字符串的长度
6.3.3、字符串的遍历
6.4、数据容器(序列)的切片
序列是指:内容连续、有序,可使用下标索引的一类数据容器。列表、元组、字符串,均可以可以视为序列。
切片:从一个序列中,取出一个子序列。
6.5、数据容器:set(集合)
特点:不重复且无序
6.5.1、集合的操作
- 添加新元素
- 移除元素
- 从集合中随机去除元素(会得到一个元素的结果,同时集合本身被修改,元素被移除)
- 清空集合
- 取两个集合的差集
- 消除2个集合的差集
- 2个集合合并
- 查看集合的元素数量
6.5.2、集合的遍历
6.6、数据容器:dict(字典、映射)
特点:key-value且不能重复,重复会进行覆盖
6.6.1、字典的操作
-
字典数据的获取
-
嵌套字典的获取
-
新增元素
-
更新元素
-
删除元素
-
清空字典
-
获取全部的key
-
计算字典内键值对的数量
6.6.2、字典的遍历
6.7、数据容器对比总结
6.8、数据容器的通用操作
七、函数进阶
7.1、函数多返回值
7.2、函数的多种传参方式
7.2.1、位置参数
调用函数时根据函数定义的参数位置来传递参数
7.2.2、关键字参数
7.2.3、缺省参数
缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
7.2.4、不定长参数
不定长参数也叫可变参数. 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
位置传递
关键字传递
7.3、匿名函数
7.3.1、函数作为参数传递
定义:函数本身是可以作为参数,传入另一个函数中进行使用的。
作用:传入计算逻辑,而非传入数据。
7.3.2、lambda匿名函数
八、文件操作
文件:如一篇文章,一段视频,一个可执行文件等。操作系统以文件为单位管理磁盘中的数据。
8.1、文件的编码
计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中。同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容
常用的是UTF-8编码
8.2、文件的读取
- open()打开函数
- read()方法
- readlines()方法:会读取到换行
- readline():一次读取一行内容
- for循环读取文件行
- close():关闭文件对象
- with open语法
8.3、文件的写入
- 注:
w模式,文件不存在,会创建新文件
w模式,文件存在,会清空原有内容
close()方法,带有flush()方法的功能
8.4、文件的追加
- 注:
可以使用”\n”来写出换行符
九、异常模块与包
异常定义:当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示。
9.1、异常的捕获办法
异常捕获(异常处理):对可能出现的bug,进行提前准备、提前处理。
- 基本语法:
- 如何捕获所有异常
except:/except Exception:
9.2、异常的传递
9.3、python模块
- 模块:一个python文件,以.py结尾。内部可以定义类、函数、变量,还有可执行代码。
- 模块的作用:一个模块就是一个工具包,可以帮我们快速实现一些功能。
9.3.1、模块的导入
import 模块名
from 模块名 import 功能名
from 模块名 import *
as 定义别名
9.3.2、自定义模块
Python中已经帮我们实现了很多的模块. 不过有时候我们需要一些个性化的模块, 这里就可以通过自定义模块实现。
if name == “main”
- 问:在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息,例如,在my_module1.py文件中添加测试代码test(1,1)。
此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行test
函数的调用
- 解决方法:
__all__变量
如果一个模块文件中有__all__
变量,当使用from xxx import *
导入时,只能导入这个列表中的元素
9.4、python包
- 作用:如果Python的模块太多了,就可能造成一定的混乱,通过Python包的功能来管理。 包的作用就是包含多个模块,但包的本质依然是模块
init.py文件的作用:创建包会默认自动创建的文件,通过这个文件来表示一个文件夹是Python的包,而非普通的文件夹。
9.4.1、自定义包
导入包方式一:import 包名.模块名
导入包方式二:from 包名 import *
引用方式:模块名.目标
注意:必须在__init__.py
文件中添加__all__ = []
,控制允许导入的模块列表
9.4.2、安装第三方包
- pip慢速安装
- pip慢速安装
- pip快速安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
- pycharm中安装
十、数据可视化——折线图可视化
10.1、json数据格式
- 定义:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。类似国际通用语言-英语。
- 原因:各种编程语言存储数据的容器不尽相同,如python有字典dict,其他语言可能没有对应的字典。
- Python语言使用JSON有很大优势,因为:JSON无非就是一个单独的字典或一个内部元素都是字典的列表
10.2、pyecharts模块安装
做数据可视化效果图
- 安装:
10.3、pyecharts快速入门
十三、面向对象
13.1、类的定义和使用
13.2、成员方法和变量的定义和使用
- self的作用:
1表示类对象本身的意思
2只有通过self,成员方法才能访问类的成员变量和成员方法
3self出现在形参列表中,但是不占用参数位置,无需理会
13.3、构造函数
创建对象后,一个一个对成员变量赋值过于麻烦。
- Python类可以使用:init()方法,称之为构造方法。
13.4、魔术方法
内置的类方法,如__init__ 构造方法
str:字符串方法
类似于java中的toString方法
lt:小于符号比较方法
le:小于等于符号比较方法
eq:等于符号比较方法
13.5、封装
面向对象的三大特性:封装,继承,多态
封装:将现实事物的属性行为封装为类的成员变量和成员方法。
私有成员
13.6、继承
单继承
多继承
- 注:
1多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级。即:先继承的保留,后继承的被覆盖
复写
相当于java中的重写
13.7、类型注解
- 定义:在代码中涉及数据交互的地方,提供数据类型的注解(显式的说明)
- 作用:
1帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示
2帮助开发者自身对变量进行类型注释(备注) - 为什么使用类型注解:
13.7.1、变量的类型注解
-
基础语法1: 变量: 类型
-
基础语法2:# type: 类型
如何使用
注:
13.7.2、函数(方法)的类型注解
形参注解
返回值注解
13.7.3、Union类型注解
定义联合类型注解
- 注:使用Union需要导包,from typing import Union
13.8、多态
定义:完成某个行为时,使用不同的对象会得到不同的状态。
13.8.1、抽象类/接口
十四、Python执行SQL语句操作MySQL数据库
- pymysql
创建到mysql的数据库连接
创建数据库
查询
CRUD
- 注: