python基础笔记(自用)

python学习记录

1.关键字

在这里插入图片描述

2导入模块

在这里插入图片描述
在这里插入图片描述

2.1 导入模块练习

在这里插入图片描述
在这里插入图片描述

3.数据类型

在这里插入图片描述

3-1 数字

3-1-1.整形–int

在这里插入图片描述

3-1-2.浮点型–float

在这里插入图片描述

3-1-3.复数类型–complex

在这里插入图片描述
在计算机中用a+bj来表示复数。

复数相加
在这里插入图片描述
在这里插入图片描述

3-1-4. 布尔类型–bool( True &False)

1. 布尔类型属于整数类型,属于证书类型的子类。
2. 0和1不能表示bool类型。
在这里插入图片描述
在这里插入图片描述

4.数据据类型的转换

4.1隐式类型转换

在这里插入图片描述

4.2显式类型转换

在这里插入图片描述
在这里插入图片描述

5.运算符

5.1算数运算符

在这里插入图片描述
在这里插入图片描述

5.2比较运算符

在这里插入图片描述
在这里插入图片描述

5.3逻辑运算符

在这里插入图片描述

5.4位运算符

x&y 相同位都是1则为1,有一个是0则为0。
x|y 相同位有一个是1则为1。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4.1按位取反

在这里插入图片描述

5.5赋值运算符

在这里插入图片描述

5.6运算符优先级

在这里插入图片描述
在这里插入图片描述

6. 程序流程控制

6.1分支语句

在这里插入图片描述

6.1.1 if结构

在这里插入图片描述
在这里插入图片描述

6.1.2if-else 结构

在这里插入图片描述

6.1.3 if-elif-else

在这里插入图片描述

6.2循环语句

6.2.1 while 循环

在这里插入图片描述
在这里插入图片描述

6.2.2 for循环

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3跳转语句

在这里插入图片描述

6.3.1 break语句

在这里插入图片描述
在这里插入图片描述

6.3.2continue语句

在这里插入图片描述
在这里插入图片描述

7.容器类型数据

在这里插入图片描述

7.1序列–sequence

在这里插入图片描述
在这里插入图片描述

7.1.1序列的索引操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.1.2加和乘的操作

在这里插入图片描述
在这里插入图片描述

7.1.3切片操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.1.4成员测试

在这里插入图片描述
在这里插入图片描述

7.2列表

在这里插入图片描述
**

列表内可存放不同类型的数据

**

7.2.1列表的创建

两种方式
在这里插入图片描述
在这里插入图片描述

7.2.2 追加元素

追加单个元素 list.append()
追加多个元素:
(1)list=list+t
(2) list.extend(t)

在这里插入图片描述
在这里插入图片描述

7.2.3插入元素

insert(i,x)
i参数表示插入位置
x参数表示插入元素

在这里插入图片描述
在这里插入图片描述

7.2.4替换元素

在这里插入图片描述
在这里插入图片描述

7.2.5删除元素

在这里插入图片描述
存在两个相同元素,remove()方法删除的是第一个元素。
在这里插入图片描述

7.3元组

在这里插入图片描述

一个元组内可存放不同的数据类型

7.3.1创建元组–tuple

两种方式:
1.小括号创建,小括号可省略
2.tuple() 函数创建

在这里插入图片描述
在这里插入图片描述

t=1, //创建只有一个元素的元组

7.3.2 元组拆包

在这里插入图片描述
在这里插入图片描述

7.4集合–set

在这里插入图片描述
**

三点:
1.可迭代
2.无序
3.不包含重复元素

**

7.4.1创建集合

在这里插入图片描述
在这里插入图片描述

7.4.2修改集合

在这里插入图片描述
在这里插入图片描述

7.5字典–dict

在这里插入图片描述

7.5.1创建字典

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021071423033

7.5.2修改字典

在这里插入图片描述
字典增删改查
在这里插入图片描述

7.5.3访问字典视图

在这里插入图片描述
在这里插入图片描述

8.字符串

在这里插入图片描述

8.1字符串的表示方式

在这里插入图片描述

8.1.1普通字符串

在这里插入图片描述

常用转义符

在这里插入图片描述
在这里插入图片描述

8.1.2原始字符串

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

8.1.3长字符串

用三个单引号或三个双引号括起来,会保留原来排版的格式

在这里插入图片描述
在这里插入图片描述

8.2字符串与数字的互相转换

在这里插入图片描述

8.2.1将字符串转化为数字

在这里插入图片描述
在这里插入图片描述

8.2.2将数字转化为字符串

在这里插入图片描述
在这里插入图片描述

8.3格式化字符串

在这里插入图片描述

8.3.1占位符的使用

{} 就是占位符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.3.2格式化控制符

在占位符中格式化控制符

在这里插入图片描述在这里插入图片描述

8.4操作字符串

在这里插入图片描述

8.4.1字符串的查找

在这里插入图片描述
在这里插入图片描述

8.4.2字符串替换

在这里插入图片描述
将”空格“替换为”竖线“,指定count参数为2则前两个被替换。
在这里插入图片描述

8.4.3字符串分割

在这里插入图片描述
使用”空格“分割字符串,返回值为一个list列表,maxsplit指定分割次数,默认全部分割。
在这里插入图片描述

9.函数

在这里插入图片描述
在这里插入图片描述

9.1函数的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.2调用函数

9.2.1使用位置参数调用函数

在这里插入图片描述
在这里插入图片描述

9.2.2使用关键字参数调用函数

在这里插入图片描述
在这里插入图片描述

9.3参数的默认值

python中无函数的重载,存在为函数指定默认参数。
在这里插入图片描述
在这里插入图片描述

9.4可变参数

在这里插入图片描述

9.4.1基于元组的可变参数(*可变参数)

在这里插入图片描述

9.4.2基于字典的可变参数(**可变参数)

在这里插入图片描述

9.5函数中变量的作用域

在这里插入图片描述
1.此时输出的全部为全局变量的20
在这里插入图片描述
在这里插入图片描述

2.此时函数中输出的为10,全局变量输出的为20。
在这里插入图片描述
在这里插入图片描述
3.关键字global将函数中局部变量X升级成同名的全局变量,此时全输出为10。
在这里插入图片描述
在这里插入图片描述

9.6函数类型

在这里插入图片描述

9.6.1理解函数类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.6.2过滤函数filter()

filter第一个参数是函数类型(提供过滤规则),第二个参数是可迭代对象。
在这里插入图片描述
filter()函数返回值是一个可迭代对象,此处将其转换为列表。
在这里插入图片描述
在这里插入图片描述

9.6.3映射函数map()

在这里插入图片描述
map()函数返回值是一个可迭代对象,此处将其转化为列表。
在这里插入图片描述
在这里插入图片描述

9.7lambda函数(匿名函数)

在这里插入图片描述
lambda函数中“:”后函数体只能写一行,若想写多行课将其他内容封装成函数在此调用
在这里插入图片描述

10.类与对象

在这里插入图片描述

10.1面向对象

在这里插入图片描述

10.2 定义类

此处pass保证代码完整性,实际开发中类有主体不用加pass。
“(object)”可以省略,默认继承object类。
在这里插入图片描述

10.3创建对象

在这里插入图片描述

10.4类的成员

在这里插入图片描述

      a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。
      
      b、局部变量:在函数内、在class的方法内(未加self修饰的),这就是局部变量。

      c、 静态变量:在class内的,但不在class的方法内的,这就是静态变量。

      d、 实例变量:在class的方法内的,用self修饰的变量,这就是实例变量。

实例变量:属于某个具体的类(类实例化后生成的对象)的变量。
类变量:属于类的变量。

类变量是指一个类的变量,通常为静态变量,而实例变量通常是动态的 类变量实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象。
实例方法:属于类实例化后具体对象的方法。
类方法:属于类本身的方法。

10.4.1实例变量

self表示当前对象,即类实例化的每个实例本身。
对象实例化时,调用构造方法将类名后括号内的参数传给每个实例的属行(self.name),self.name中的name就是实例变量。
在这里插入图片描述

10.4.2构造方法

python不同于java,python不需要在类中专门声明成员变量,在构造方法中定义成员变量。例:self.name。
在这里插入图片描述

10.4.3实例方法

在这里插入图片描述
1. 实例方法调用时通过对象名.方法名来调用。
2. 类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定使用 self。
3. 构造方法也是一种实例方法。
在这里插入图片描述

10.4.4类变量

此处利率为类变量,不特属于单个实例。
类变量位于构造方法之外。
类变量同过类名.类变量来调用。

在这里插入图片描述

10.4.5类方法

类方法的定义需要在方法名上加装饰器@classmethod
cls表示当前类,类似于self。
当前类cls调用类变量interest_fate。

在这里插入图片描述

10.5封装性(封装、继承、多态面向对现象三大特性)

在这里插入图片描述

10.5.1私有变量

1.成员变量前加两个下划线_ _声明成为私有变量。
2.实例变量和类变量都可以声明成私有变量
3.私有变量只能在类的内部访问,类的实例化对象在类外部不可访问。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10.5.2私有方法

在这里插入图片描述

在这里插入图片描述

10.5.3使用属性(借此来简化get&set方法)

在这里插入图片描述
在这里插入图片描述
1.在类中声明set和get方法。
在这里插入图片描述
2.在类外通过对象来调用set和get方法访问类中的私有成员变量。
在这里插入图片描述

此方式类似java中的get和set方法的定义,但是一个私有的成员变量需要定义两个公有的方法(get&set方法)来访问它,比较麻烦所以python定义属性来简化这一操作。

10.5.3.1 python中属性的使用(get&set方法的定义和使用)

定义
在这里插入图片描述
使用在这里插入图片描述

10.6继承性(面向对象的三大特性:封装、继承、多态)

在这里插入图片描述

10.6.1python中的继承

在这里插入图片描述
在这里插入图片描述

10.6.2多继承(一个子类继承多个父类)

很多语言不支持多继承,例如java,但python支持。
在这里插入图片描述

若子类继承的多个父类有同名方法,继承顺序:从左到右。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

10.6.3方法重写

子类中根据子类需要重写重写父类的方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.7多态性(面向对象的三大特性:封装、继承、多态)

python属于动态类型语言,实现多态比较复杂。
在这里插入图片描述

10.7.1继承与多态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.7.2鸭子类型测试与多态

1.动态类型语言都支持鸭子类型测试,例如python,静态类型语言不支持鸭子类型测试,例如java。
2.python通过鸭子类型测试来实现广泛的多态,不只局限于子类和父类之间,不同的类之间也可实现多态,只要这些类之间有相同的方法。
在这里插入图片描述
不同的类之间实现多态测试:
在这里插入图片描述
运行输出:
在这里插入图片描述

11.异常处理

在这里插入图片描述

11.1第一个异常–除零异常

在这里插入图片描述
在这里插入图片描述

11.2捕获异常

在这里插入图片描述

11.2.1 try-except语句

[异常类型]可省,省略后默认捕获所有异常。
在这里插入图片描述
在这里插入图片描述
as e :将捕获的异常赋予变量e。
在这里插入图片描述
在这里插入图片描述

11.2.2多个except代码块

在这里插入图片描述
在这里插入图片描述
除零异常:
在这里插入图片描述
非数字异常:
在这里插入图片描述

11.2.3多重异常捕获

在这里插入图片描述

11.2.4 try-except 语句嵌套

并不是所有异常都能嵌套,所嵌套的异常要具有一定包含关系。
在这里插入图片描述

11.3使用finally代码块释放资源

不论发不发生异常都会经过finally代码块。
在这里插入图片描述

在这里插入图片描述
正常结束:在这里插入图片描述

发生异常结束:在这里插入图片描述

11.4自定义异常类

1.写一个自定义的异常类,继承自python官方异常类Exception。
2.写构造方法也要继承exception的构造方法。
在这里插入图片描述

11.5 手动引发异常

在这里插入图片描述
在这里插入图片描述
有点问题,先记录一下!
在这里插入图片描述

12.常用内置模块

在这里插入图片描述

12.1数学计算模块–math

在这里插入图片描述
使用前应先导入math模块
在这里插入图片描述

12.2日期时间模块–datetime

在这里插入图片描述

12.2.1datetime类

datetime.datetime(参数)创建了一个时间对象。
在这里插入图片描述
在这里插入图片描述

12.2.1.1datetime类的常用方法

在这里插入图片描述
在这里插入图片描述

12.2.2date类

date类只能表示日期。
在这里插入图片描述
在这里插入图片描述

12.2.3 time类

在这里插入图片描述

12.2.4计算时间跨度类 timedelta

参数表示间隔的时间。
在这里插入图片描述

12.2.5将日期时间与字符串相互转换

简记:
strftime()—string format time 将时间对象转化为字符串
dateptime()–date pass time 将字符串类型日期转化为时间对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.3正则表达式模块-re

在这里插入图片描述
在这里插入图片描述

12.3.1正则表达式的字符串匹配

\w:匹配任何字符
+:字符数量>=1
\.:表示 .
在这里插入图片描述

在这里插入图片描述

12.3.2正则表达式字符串查找

在这里插入图片描述
span(16,45)表示找到的第一个字符串的下标。
在这里插入图片描述

12.3.3字符串替换

在这里插入图片描述
在这里插入图片描述

12.3.4字符串分割

在这里插入图片描述
在这里插入图片描述

13.文件读写

在这里插入图片描述

13.1 文件打开

在这里插入图片描述

文件打开模式

在这里插入图片描述

常用进行组合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三种文件路径的表示

在这里插入图片描述

13.2关闭文件

在这里插入图片描述

13.2.1 在finally代码块中关闭文件

OSError和操作系统相关的异常。
在这里插入图片描述

13.2.2在with as 代码块中关闭文件(推荐写法)

在这里插入图片描述
在这里插入图片描述

13.3 读写文本文件

文件内的内容可以是ASCII码的,这种文件我们往往直接可以阅读,叫文本文件。
在这里插入图片描述
flush() 为提高写入效率、减少IO操作次数,每次写文件并不是将数据真正写入文件中,而是先写到缓冲区中,文件关闭时会自动刷新缓冲区将缓冲区内容写入文件,flush()强制刷新缓冲区,在文件未关闭时将缓冲区内容写入文件。

13.4 复制文本文件

在这里插入图片描述
在这里插入图片描述

13.5 读写二进制文件

有的文件(如程序、视频、图片、或一些电子书等等),计算机是直接用二进制的0和1记录的,我们无法直接阅读。甚至根本无法读。这种文件叫二进制文件。
在这里插入图片描述

13.6复制二进制文件

在这里插入图片描述

14.图形用户界面

在这里插入图片描述

14.1Python中的图形用户界面开发库

在这里插入图片描述
wxPython比Tkinter强大,比PyQt操作简便,这里学习wxPython。

14.2 安装wxPython

在这里插入图片描述
在这里插入图片描述

14.3第一个wxPython程序

wx.app()是模块导入的用法,详情在#2。
在这里插入图片描述

import wx引入wxPython模块失败问题处理

我用Pycharm输入以上代码,在已经安装wxpython请境况下,import wx引入模块失败,于是重新安装了下就可正常使用了,如下。
在这里插入图片描述
在这里插入图片描述

14.4 自定义窗口类

自定义窗口类,以便功能扩展。
在这里插入图片描述

14.5 在窗口中添加控件

在这里插入图片描述
在这里插入图片描述
面板panel中可放面板,可放控件。
panel中的parent=self,表示父容器为MyFram对象.

在这里插入图片描述
在这里插入图片描述

14.6 事件处理

在这里插入图片描述
在这里插入图片描述
EVT_BUTTON是常量,表示此为wx一个按钮类型。
在这里插入图片描述

14.7布局管理

在这里插入图片描述

14.7.1 盒子布局管理器

在这里插入图片描述

14.7.1.1创建盒子布局管理器对象

在这里插入图片描述

14.7.1.2添加子窗口(或控件)到父窗口

window 表示子窗口,盒子布局管理器所属哪个容器。
proportion 表示权重。
flag 标志,下文介绍。
border 如果在flag中指定有边框,可通过此标签设置边框宽度。
在这里插入图片描述
在这里插入图片描述

flag对齐标志

在这里插入图片描述

flag边框标志

在这里插入图片描述

flag调整尺寸标志

在这里插入图片描述

14.7.2重构事件处理示例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.7.3盒子布局管理器嵌套示例

button1和button2水平布局。
button1、button2和单击按钮垂直布局。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.8控件

wxPython的所有控件都继承自wx.Control类。之前的示例已经使用了静态文本和按钮,本节重点介绍文本输入控件、单选按钮、复选框、列表和静态图片控件。

在这里插入图片描述

14.8.1文本输入控件

文本输入控件(wx.TextCtrl)是可以输入文本的控件。
在这里插入图片描述
在这里插入图片描述

14.8.2复选框和单选按钮

多选控件是复选框(wx.CheckBox),复选框(wx.CheckBox)有时也能单独使用,能提供两种状态的开和关。
单选控件是单选按钮(wx.RadioButton),同一组的多个单选按钮应该具有互斥性,就是当一个按钮按下时,其他按钮一定释放。

在这里插入图片描述
在这里插入图片描述
指定为wx.RB_GROUP一个组后两个radio互斥。
在这里插入图片描述
在这里插入图片描述

14.8.3列表

对列表控件可以进行单选或多选,列表控件类是wx.ListBox。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
wx.LB_SINGLE:单选。
wx.LB_MULTIPLE:多选。
wx.LB_EXTENDED:多选,但是需要在按住Ctrl或Shift键时选择项目。
wx.LB_SORT:对列表选择项进行排序。

14.8.4 静态图片控件

静态图片控件用于显示一张图片,图片可以是wx.Python所支持的任意图片格式,静态图片控件类是wx.StaticBitmap。

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

14.9如何使用wxPython官方文档

1 打开wxPython官网页面。
在这里插入图片描述
2 打开官方API帮助文档。
在这里插入图片描述
3 使用API帮助文档。
在这里插入图片描述

15.网络通信

在这里插入图片描述

15.1基本的网络知识

在这里插入图片描述

15.1.1 TCP/IP协议

在这里插入图片描述

15.1.2IP地址

在这里插入图片描述

15.1.3端口

在这里插入图片描述

15.1.4 HTTP/HTTPS协议

对互联网的访问大多基于HTTP/HTTPS,HTTP/HTTPS是TCP/IP的一种协议。
1 HTTP
HTTP(Hypertext Transfer Protocol,超文本传输协议)属于应用层协议,其简捷、快速的方式适用于分布式超文本信息传输。HTTP是无连接协议,即在每一次请求时都建立连接,服务器在处理完客户端的请求后,会先应答客户端,然后断开连接,不会一直占用网络资源。
HTTP/1.1共定义了8种请求方法:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE和CONNECT。GET和POST方法最常用。
2 HTTPS
HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)是超文本传输协议和SSL的组合,用于提供加密通信及对网络服务器身份的鉴定。简单地说,HTTPS是加密的HTTP。

HTTPS与HTTP的区别是:HTTPS使用https://代替http://,HTTPS使用端口443,而HTTP使用端口80与TCP/IP通信。
在这里插入图片描述
1) GET方法:用于向指定的资源发出请求,被发送的信息“显式”地跟在URL后面。它一般只用于读取数据,例如静态图片等。GET方法有点像使用明信片给别人写信,将“信的内容”写在外面,接触到的人都可以看到,因此是不安全的。

在这里插入图片描述

2) POST方法:用于向指定的资源提交数据,请求服务器进行处理,例如提交表单或者上传文件等。数据被包含在请求体中。POST方法像是把“信的内容”装入信封中,接触到该信封的人都看不到信的内容,因此是相对安全的。
在这里插入图片描述

15.2 搭建web服务器

1.下载tomcat
tomcat官网 https://tomcat.apache.org/
在这里插入图片描述

选择合适版本下载,此下载tomcat9。
2.解压
在这里插入图片描述
3.运行服务
将自己的代码放入webapps文件夹下,进入bin目录找到startup.bat双击运行。
在这里插入图片描述
启动成功。在这里插入图片描述
打开浏览器,在地址栏中输入http://localhost:8080/后回车。
在这里插入图片描述
关闭tomcat双击在这里插入图片描述

15.3urllib.request模块

在这里插入图片描述

15.3.1 发送GET请求

如果要发送HTTP/HTTPS的GET请求,则可以使用urllib.request模块的Request对象。
在这里插入图片描述
在这里插入图片描述

15.3.2 发送POST请求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15.4 JSON数据

在这里插入图片描述

在这里插入图片描述

15.4.1 JSON文档的结构

构成JSON文档的两种结构为:JSON对象(object)和JSON数组(array)。

在这里插入图片描述
在这里插入图片描述

Json的数据类型和python数据类型对比

在这里插入图片描述

15.4.2 JSON数据的解码

在这里插入图片描述
我们使用json模块提供的loads(str)函数进行JSON数据的解码,参数str是JSON字符串,返回Python数据。
在这里插入图片描述
在这里插入图片描述

15.5练习下载图片

在这里插入图片描述
在这里插入图片描述
注意:下载网络上的图片要找到网络上的图片地址,url拦上的有时不全是图片的url,因此会导致下载的图片打不开。

16.访问数据库

在这里插入图片描述

16.1 SQLite数据库

在这里插入图片描述

SQLite数据库和Oracle或MySQL数据库有什么不同

在这里插入图片描述

16.1.1SQLite数据库类型

SQLite是无数据类型的数据库,在创建表时不需要为字段指定数据类型。但从编程规范上讲,我们应该指定数据类型,因为数据类型可以表明这个字段的含义,便于我们阅读和理解代码。
SQLite支持的常见数据类型如下。

在这里插入图片描述

16.1.2 Python数据类型与SQLite数据类型的映射

在使用Python访问SQLite数据库时,会经常涉及数据类型的互相转换。它们的映射关系如下表所示。
在这里插入图片描述

16.1.3 使用GUI管理工具管理SQLite数据库

在这里插入图片描述
1 安装和启动DB Browser for SQLite
官网下载:http://www.sqlitebrowser.org/dl/
csdn资源下载:https://download.csdn.net/download/qq_37356556/20679425
下载后直接解压。

2 创建数据库、创建表
在这里插入图片描述
在这里插入图片描述
3.执行SQL语句
在这里插入图片描述
4.浏览数据
在这里插入图片描述

16.2 数据库编程的基本操作过程

数据库编程主要分为两类:查询(Read)和修改(C插入、U更新、D删除)。
在这里插入图片描述
1 查询数据
查询数据时需要6步,在查询过程中需要提取数据结果集,最后释放资源,即关闭游标和数据库。
2 修改数据
修改数据时如上图所示,最多需要6步,在修改过程中如果执行SQL操作成功,则提交数据库事务;如果失败,则回滚事务。最后释放资源,关闭游标和数据库。
加粗样式

16.3 sqlite3模块API

Python官方提供了sqlite3模块来访问SQLite数据库。

16.3.1 数据库连接对象Connection

数据库访问的第一步是进行数据库连接。
我们可以通过connect(database)函数建立数据库连接参数database是SQLite数据库的文件路径,如果连接成功,则返回数据库连接对象Connection。
Connection对象有如下重要的方法。

在这里插入图片描述

16.3.2 游标对象Cursor

一个Cursor游标对象表示一个数据库游标,游标暂时保存了SQL操作所影响到的数据。游标是通过数据库连接创建的。

一个游标对象简单理解为从数据库返回的数据集合,一个临时的表。

在这里插入图片描述
**execute(sql[,parameters]):**执行一条SQL语句,sql是SQL语句,parameters是为SQL提供的参数,可以是序列或字典类型。返回值是整数,表示执行SQL语句影响的行数。
**executemany(sql[,seq_of_params]):**执行批量SQL语句,sql是SQL语句,seq_of_params是为SQL提供的参数,seq_of_params是序列。返回值是整数,表示执行SQL语句影响的行数。
在通过execute()和executemany()方法执行SQL查询语句后,还要通过提取方法从查询结果集中返回数据,相关提取方法如下。
**fetchone():**从结果集中返回只有一条记录的序列,如果没有数据,则返回None。
**fetchmany(size=cursor.arraysize):**从结果集中返回小于等于size记录数的序列,如果没有数据,则返回空序列,size在默认情况下是整个游标的行数。
fetchall():从结果集中返回所有数据。

16.4SQLite数据库的CURD操作

在这里插入图片描述
对之前建立的数据库表student增加性别和生日字段。
在这里插入图片描述

16.4.1无条件查询

无条件查询最为简单,没有WHERE子句。
在这里插入图片描述
在这里插入图片描述
其中result_set的数据类型是列表类型:
在这里插入图片描述

16.4.2 有条件查询

有条件查询带有WHERE子句,WHERE子句是查询条件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16.4.3 插入数据

数据插入操作SQL语句是INSERT。
在这里插入图片描述
数据插入成功,可以使用DB Browser for SQLite浏览数据。

在这里插入图片描述
在这里插入图片描述

16.4.4 更新数据

数据更新操作SQL语句是UPDATE。
在这里插入图片描述

16.4.5 删除数据

数据删除操作SQL语句是DELETE。
在这里插入图片描述

16.5 防止SQL注入攻击

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

17. 多线程

如果想让我们的程序同时执行多个任务,就需要使用多线程技术了。到目前为止,我们编写的程序都是单线程的,在运行时一次只能执行一个任务。
在这里插入图片描述

17.1 线程的相关知识

在这里插入图片描述

17.1.1 进程

在这里插入图片描述
一个进程就是一个正在执行的程序,每一个进程都有自己独立的一块内存空间、一组系统资源。在进程的概念中,每一个进程的内部数据和状态都是完全独立的。
在Windows操作系统中,一个进程就是一个exe或者dll程序,它们相互独立,相互也可以通信。

windows 中的进程
在这里插入图片描述

17.1.2 线程

在这里插入图片描述
在一个进程中可以包含多个线程,多个线程共享一块内存空间和一组系统资源。所以,系统在各个线程之间切换时,开销要比进程小得多,正因如此,线程被称为轻量级进程。

17.1.3 主线程

在这里插入图片描述

Python程序至少有一个线程,这就是主线程,程序在启动后由Python解释器负责创建主线程,在程序结束后由Python解释器负责停止主线程。
在多线程中,主线程负责其他线程的启动、挂起、停止等操作。其他线程被称为子线程。

17.2 线程模块——threading

Python官方提供的threading模块可以进行多线程编程。threading模块提供了多线程编程的高级API,使用起来比较简单。
在threading模块中提供了线程类Thread,还提供了很多线程相关的函数,这些函数中常用的如下。

在这里插入图片描述
在这里插入图片描述
运行输出:
在这里插入图片描述

17.3 创建子线程

在这里插入图片描述

17.3.1 自定义函数实现线程体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行输出:
在这里插入图片描述
在这里插入图片描述

17.3.2 自定义线程类实现线程体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
推荐两处改动更容易理解多线程的运行原理:
在这里插入图片描述

17.4 线程管理

在这里插入图片描述

17.4.1 等待线程结束

有时,一个线程(假设是主线程)需要等待另外一个线程(假设是t1子线程)执行结束才能继续执行。
在这里插入图片描述

join()方法用法

参数timeout用于设置超时时间,单位是秒。如果没有设置timeout,则可以一直等待,直到结束。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从运行结果来看,在子线程t1结束后,主线程才输出变量value的内容,这说明主线程被阻塞了。
如果尝试将t1.join()语句注释掉,则输出结果如下:
此时主线程未中途停止。
在这里插入图片描述

17.4.2 线程停止

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
运行示例:
在这里插入图片描述

17.5 下载图片示例

在这里插入图片描述
这个网络爬虫程序每隔一段时间都会执行一次下载图片任务,在下载任务完成后,休眠一段时间再执行。这样反复执行,直到爬虫程序停止。
示例参考代码如下:

在这里插入图片描述

以上所有课程来自b站:https://www.bilibili.com/video/BV1Fh411h7WM

18. python常用模块使用

18.1OS模块

(1)获取图片列表中每一个图片的名称
在这里插入图片描述
(2拼接路径
在这里插入图片描述

  • 94
    点赞
  • 463
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像夏天一样热

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值