大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说python编程_python基本42个命令,希望您对编程的造诣更进一步.
python入门
python基本语法
pycharm常用快捷键
ctrl+alt+s:打开软件设置
ctrl+d:复制当前行代码
shift+alt+上/下:将当前行代码向上或向下移动
ctrl+shift+f10:运行当前代码文件
shift+f6:重命名文件
ctrl+f:搜索
python基础语法
一,注释
单行注释:#
多行注释:“”“我是多行注释”“” 二,变量与print输出函数
变量的定义格式:变量名=变量值
如:
print()是输出函数
如:
三,数据类型
常见的数据类型

type()函数用来查看数据类型
如:
四,数据类型转换
字符串,整数,浮点型数据类型转换语句分别
int(x),float(x),str(x),
note:1,任何数据类型都可以转换成字符串
2,字符串转换为数字有限制
3,浮点型转换为整数需注意丢失精度问题 五,标识符
标识符命名规则:
1.由字母数字下划线组成
2.第一个字符必须是字母或者是下划线
3.标识符不能以数字开头
4.标识符区分大小写
5.不能与关键字重名
常见关键字
六,运算符
常见数学运算符

赋值运算符:=
常见复合赋值运算符
七,字符串 字符串定义方法三种
1.单引号方式
2.双引号方式
3.三引号方式
引号的嵌套使用转义字符
如
字符串的拼接:
字符串的拼接使用+链接字符串变量或者字符串字面量
如
注意无法和非字符串类型进行拼接
字符串的格式化1语法为:”%占位符“ %变量
如
常用占位符有%s:字符串,%d:整数,%f:浮点类型
字符串格式化2语法 f“内容{变量}”,这种方式不会做精度的控制
如
格式化精度控制
使用”m.n"来控制数据的宽度合精度,m用来控制数据的宽度,若设置的宽度小于数字自身的宽度,不生效,n用来控制数据的精度,会进行小数的四舍五入,m和.n均可省略
如
表达式的格式化
基于字符串有两种格式化方式,表达式也有两种格式化方式
如
数据输入函数input()
input()函数用来获取键盘输入,括号内可以用来设置提示信息,注意无论键盘输入什么类型的数据,通过input()函数得到的都是字符串类型
如
八,判断语句 一,布尔类型与比较运算符
布尔类型字面量:True:真,False:假
定义方式:变量名称=布尔类型字面量
常见比较运算符
二,if语句
if…else语句
语法格式:
if 条件:
满足条件时要做的事
else
不满足条件时要做的事
如
if …elif…esle语句
语法格式:
if 条件1:
满足条件1要做的事
elif: 条件2:
满足条件2要做的事
else
不满足所有条件要做的事
如
if语句的嵌套使用
语法格式:
if 条件1:
满足条件1做的事
if 条件2:
满足条件2做的事
如
使用and检查多个条件,使用and必须两者的关系都为真,判断结果才会为真,若至少有一个假,则结果为假
使用or检查多个条件,使用or必须两者的关系都为假,判断结果才会为假,若至少有一个真,则结果为真
九,循环语句 1.while循环语句
基本语法格式:
注意:条件需提供布尔类型,注意循环终止条件,避免不必要的死循环
案例一
案例二
2.while循环的嵌套
基本语法:
案例
3.for循环
基本语法:
案例
与while循环不同,for循环是无法定义循环条件的,只能从被处理的数据集中,以此取出内容进行处理
语法中的待处理数据集包括字符串,列表,元组等
range语句:
获取一个从0开始,到num结束的数字序列(不含num本身)
如range(5)取得的数据是【0,1,2,3,4】
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
获得从num1开始,到num2结束的数字序列(不含num2本身)数字之间的步长,以step为准(step默认为1)
案例
4.变量的作用域
for循环中的的临时变量,作用域限定为循环内部,被称作局部变量,在for循环外部访问临时变量:实际上是可以访问的到的,但在编程规范上,是不允许,不建议这么做 5.for循环的嵌套使用
基本语法:
案例
同时,for循环也可以与while循环嵌套使用 6.break与continue关键字
continue:可以控制它所在的循环临时中断
break:可以直接结束所在的循环 十,函数
函数:是组织好,可重复使用的,用来实现特定功能的代码段,如input(),print(),str(),int()等
优点:功能已经被封装好了,可以重复使用,提高代码的复用性,减少重复代码,提高开发效率 1.函数的定义:
def 函数名(传入参数):
函数体
return 返回值
在使用函数时,先定义函数,在调用函数,参数可以省略,返回值不需要时,也可以省略 2.函数的参数
语法解析:
函数定义中提供的x和y被称作形式参数(形参),表示函数将要使用的2个参数,参数之间使用逗号分隔
函数调用过程中,提供的5和6,被称作实际参数(实参),表示函数执行时真正使用的参数值,参数之间使用逗号隔开,实参与形参之间两者一一对应 3.函数的返回值
基本语法格式:
变量能接收到函数return返回的数据,需注意,函数在return之后就结束了,所以写在return之后的代码就不会执行
无返回值的函数可以省略return,也可以return None,两者使用变量接受后都是NoneType类型。 4.函数说明文档
在调用函数时,我们需要了解函数需要的参数以及作用,这就离不开函数说明文档
注意注释应写在函数中,函数体之前,这样在调用函数时,鼠标放在调用函数上面就会显示说明文档内容 5.函数的嵌套使用
函数的嵌套使用是指一个函数里面又调用了另外一个函数
案例
执行顺序先是执行函数b,在执行函数b过程中调用了函数a,此时函数b停止向下继续执行,执行函数a,打印输出,函数a执行完成后,再回到函数b继续执行函数b接下来的操作语句,打印输出函数b 6.变量的作用域
局部变量:在函数体内部,临时变量,当函数调用完成后,销毁局部变量
全局变量:在函数体内部,函数外部,都能生效的变量
案例
global关键字
如果要在函数内定义全局变量,需要在函数中使用global关键字
案例
十一,数据容器
数据容器是一种可以存储多个元素的python的数据类型,常见的数据容器有list(列表),tuple(元组),str(字符串),set(集合),dict(字典) 1.list列表
列表定义的基本语法:
列表中的每一个数据称之为元素,以[]作为标识,每个元素之间用,逗号隔开
案例
列表的下标索引

按照下标索引,即可取得对应位置的元素
案例一
反向索引,下标索引从-1开始依次递减
案例二
注意下标索引的取值超出范围将无法取出元素,并且报错
列表的查询功能
查找指定元素的在列的下标,如果找不到,报错ValueError
语法:列表.index(元素)
案例
修改特定位置的元素值
根据下标索引对列表元素值的修改
语法:列表[下标]=值
插入元素
在指定的下标位置,插入指定的元素
语法:列表.insert(下标,元素)
追加元素
将指定元素追加到列表的尾部
语法1:列表.append(元素)
语法2:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表的尾部
删除元素
根据索引下标删除指定元素
语法1:del 列表[下标]
语法2:列表.pop(下标)
案例
列表的修改功能
删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
清空列表元素
语法:列表.clear()
统计某元素在列表内的数量
语法:列表.count(元素)
统计列表内,有多少元素
语法:len(列表)
可以得到一个int数字,表示列表内的元素数量
列表的方法总结

列表的特点
可以容纳多个元素
可以容纳不同类型的元素
数据是有序的
允许重复数据存在
允许对数据进行修改
列表的遍历
while循环遍历方式
语法格式:
for循环遍历方式
语法格式:
两者的区别:
在循环控制上,while循环可以自定义循环条件,并且自行控制
for循环不可以自定义循环条件,只可以一个个从容器中取出数据
在无限循环上,while可以通过条件控制做到无限循环,for循环理论上不可以,因为被遍历的容器容量不是无限的 2.tuple(元组)
元组定义的语法格式:
元组的相关操作

案例
元组的具有不可修改性,一旦定义完成,就不可修改,故元组不存在修改的操作
元组的遍历和列表的遍历方式相似,既有while()循环,for()循环遍历方式。
案例
元组的特点:
可以容纳多个数据
可以容纳不同类型的数据
数据是有序的
允许重复数据存在
支持for()循环 3.字符串
字符串是字符的容器,一个字符串可以存放任意数量的字符,如“itheima”

字符串的下标索引和集合list类似,从前开始,下标从0开始,从后开始,下标从-1开始。与元组类似,字符串是一个无法修改的数据容器
字符串的常用操作:
查找特定字符串的下标索引
语法:字符串.index(字符串)
字符串的替换:将字符串的全部:字符串1,替换为字符串2,注意不是修改字符串本身,而是得到了一个新的字符串
语法:字符串.replace(字符串1,字符串2)
案例
字符串的规整操作:对字符串指定字符去除操作
案例
统计字符串中某字符串出现的次数
语法:字符串.count(字符串)
统计字符串的长度
语法:len(字符串)
划分字符串
方法是用来将字符串分割成一个字符串数组的函数。它的基本语法如下:
str.split(sep=None, maxsplit=-1),返回值是list集合
参数是指定分隔符(默认为空格), 参数是指定最大分割次数(默认为-1,表示分割所有出现的分隔符)。
字符串常用操作汇总

字符串的遍历同列表,元组一样,字符串也支持while循环和for循环进行遍历
字符串的特点
只可以存放字符串
长度任意
支持下标索引
允许重复出现
不可修改
支持for循环 4.数据容器(序列)的切片
序列:指内容连续,有序,有下标索引的一类数据容器
列表,元组,字符串均可视为序列
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVw33ZYg-93)(D:学习资料python课件截图序列.png)]
序列的常用操作:切片
切片是指从一个序列中取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列,起始下标可以留空,留空表示从头开始,结束下标表示何处结束,可以留空,留空视作取到结尾,步长表示,依次取元素的间隔,步长1表示1个个去元素,步长2表示每次跳过一个元素去,步长N表示每次跳过N-1个元素取,步长为负数反向取(注意,起始下标和结束下标也要反向标记)
案例
5.set(集合)
集合的基本定义
语法:
案例:
集合的特点是去重且无序
集合的常用操作:
添加新元素
语法:集合.add(元素),将指定元素添加到集合内,集合本身被修改,添加了新元素
案例
移除元素
语法:集合.remove(元素),将指定元素从集合内移除,集合本身被修改,移除了元素
案例
随机取出元素
语法:集合.pop(),从集合中随机取出一个元素,同时集合本身被修改,被取出的元素被移除集合
案例
清空集合
语法:集合.clear(),清空所有的集合中的元素,得到一个空集合
案例
取出两个集合的差集
语法:集合1.difference(集合2),取出集合1和集合2的差集(集合1有而集合2没有)
消除两个集合的差集
语法:集合1.difference_update(集合2)对比集合1和集合2,删除和集合2相同的元素,集合1改变,集合2不变
两个集合的合并
语法:集合1.union(集合2),将集合1和集合2组合成新集合,得到新集合,集合1与集合2不变
案例
查看集合元素的数量
语法:len(集合),统计集合内有多少个元素,得到一个整数结果
案例
集合支持for循环遍历,由于集合不支持下标索引,故不支持使用while循环。
集合的常用操作方法

集合的特点:
可以容纳多个元素
可以容纳多个不同类型的元素
数据是无序存储的
不允许重复数据存在
可以被修改
支持for循环,但不支持while循环 6.字典
字典的定义:使用{}存储,每一个键对应一个元素,key与value之间使用:分隔,键值对之间使用逗号分隔,key与value之间使用任意类型,键key不可重复定义,若重复定义会对原数据覆盖
案例
字典数据的获取,字典和集合一样,不可以使用下标索引,但是字典可以通过key值来获取对应的value
案例
字典的嵌套
案例:打印学生考试成绩表

字典新增元素
语法:字典[Key]=Value,结果:字典被修改,新增了元素
案例
删除元素
语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被修改
清空字典
语法:字典.clear(),结果:字典被修改,元素被清空
获取全部的key
语法:字典.key(),结果:得到字典中的全部的key
字典的遍历和集合相同,由于不支持下标索引,所以也不能使用while循环遍历
计算字典内部的全部元素(键值对)的数量
语法:len(字典) 结果得到一个整数,表示字典内元素(键值对)的数量
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bPQWBhG2-1687933698794)(D:学习资料python课件截图字典常用操作.png)]](https://jihuo.bianchenghao6.com/uploads/202404/16/14fdb3f5002ba946.webp)
字典的特点:
可以容纳多个不同数据类型的元素
每一份数据都是Key–value键值对
可以通过key获取到value,但key不能重复
不支持下标索引,可以修改数据,支持for循环遍历,不支持while循环遍历 7.各个数据容器之间的对比
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xDVzkQcL-95)(D:学习资料python课件截图各个数据容器之间的对比.png)] 8.各个数据容器之间的通用操作
len():统计容器中元素的个数
max():统计数据容器中的最大元素
min():统计数据容器中的最小元素
list():将指点容器转换成列表
str():将指定容器转换为字符串
tuple():将指定容器转换为元组
set():将指定容器转换为集合
sorted(容器,[reverse=True]):将指定容器进行排序,reverse值默认为False,可省略,表示是否降序排序
字符之间的比较大小是通过比价ASXII码表,同时字符串的比较是通过按位比较字符的大小 十二,函数进阶 1,多个返回值的函数
如果需求函数要有多个函数返回值,基本语法为return 返回值1,返回值2,同时接受返回值也要按位接受
案例
2,函数的多种传参方式
位置参数:调用函数时根据函数定义的参数位置来传递参数,需注意传递的参数和定义的顺序及个数须保持一致
案例
关键字传参:函数调用时通过“键=值”形式传递参数,这样可以使函数更加清晰,容易使用,同时也清除了参数的顺序要求
案例
缺省参数:缺省参数也叫做默认参数,用于定义函数,为参数提供默认参数,调用函数时可不传该默认参数的值(所有位置参数必须出现在默认参数前,包括函数定义和调用),这样当调用函数时没有传入参数,就会使用默认参数对应的值
案例
不定长参数:不定长参数也叫做可变参数,用于不确定调用的时候会传递多少个参数,当调用函数时不确定参数的个数时,可以使用不定长参数,不定长参数类型分为位置传递和关键字传递
案例一:位置传递
案例二:关键字传递
函数作为参数传递:这是一种,计算逻辑的传递,而非数据的传递。不仅仅是相加,相见、相除、等任何逻辑都可以自行定义并作为函数传入。
案例
3.匿名函数
在函数定义上存在两个不同的关键字
def关键字:可以定义带有名称的函数
lamda关键字:可以定义匿名函数
有名称的函数,可以基于名称重复使用
无名称的匿名函数,只可以临时使用一次
匿名函数的定义语法:
lambda 传入参数:函数体(一行代码)
传入参数表示匿名函数的形式参数,如x,y表示接受2个形式参数
函数体,就是函数的执行逻辑,只能写一行
案例
十三,文件操作 1.文件编码
编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。编码有许多中,我们最常用的是UTF-8编码 2.打开文件
基本语法:open(name,mode,encoding)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):r只读、w写入、a追加等。
encoding:编码格式(推荐使用UTF-8)
常见三种基本访问模式
3.读文件
基本语法:文件对象.read(num)/readlines()
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。返回值为字符串
readlines()方法:
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。同时换行符
也会被读入
readline()方法:一次读取一行内容,需注意他会记录上次读取行的位置,再次使用readline()方法会从上次读取的位置开始读取下一行,返回值是字符串
for循环读取文件行
close() 关闭文件对象,不关闭文件对象,可能会一直占用文件资源
with open 语法,这种方式可以避免使用close()方法,执行完with open中的内容后它会自动关闭文件资源
文件的操作汇总
4.文件的写入
直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区,调用flush后,内容会真正写入文件,文件如果不存在,使用”w”模式,会创建新文件,文件如果存在,使用”w”模式,会将原有内容清空
5.文件的追加,a模式,文件不存在会创建文件,a模式,文件存在会在最后,追加写入文件,可以使用”
”来写出换行符
十四,异常,模块,包 1.异常
所谓的“异常”, 也就是我们常说的BUG,例如:以方式打开一个不存在的文件。
2.异常的捕获方法
捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。
上面是捕获常规异常,除了这种方式外还可以捕获指定异常,如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。 一般try下方只放一行尝试执行的代码
捕获多个异常:捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。如除零异常

当捕获到异常时,我们还可以要求输出异常描述信息

除零异常,文件不存在异常都是异常的分支,所以就存在捕获所有异常的方式
异常else:表示的是如果没有异常要执行的代码
异常的finally:表示的是无论是否异常都要执行的代码,例如关闭文件。
3.异常的传递
异常具有传递性,当函数func01中发生异常, 并且没有捕获处理这个异常的时候, 异常会传递到函数func02, 当func02也没有捕获处理这个异常的时候main函数会捕获这个异常, 这就是异常的传递性.
4.模块
模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码.
模块的导入方式:
import 模块名
from 模块名 import 功能名
from 模块名 import *
as定义别名
自定义模块:每个Python文件都可以作为一个模块,模块的名字就是文件的名字. 也就是说自定义模块名必须要符合标识符命名规则
,在实际开发中,当一个开发人员编写完一个模块后,开发人员会在模块中添加一些测试方法,此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行测试方法,就是为了解决这个问题
注意:当导入多个模块的时候,且模块内有同名功能. 当调用这个同名功能的时候,调用到的是后面导入的模块的功能
如果一个模块文件中有变量,当使用导入时,只能导入由变量定义的变量或方法
5.包
从物理上看,包就是一个文件夹,在该文件夹下包含了一个 .py 文件,该文件夹可用于包含多个模块文件
从逻辑上看,包的本质依然是模块,没有.py 文件就不能叫做包,这个文件控制着包的导入行为。
导入包
第三方包:在Python程序的生态中,有许多非常多的第三方包(非Python官方),可以极大的帮助我们提高开发效率,如:
科学计算中常用的:numpy包
数据分析中常用的:pandas包
大数据计算中常用的:pyspark、apache-flink包
图形可视化常用的:matplotlib、pyecharts
人工智能常用的:tensorflow
PyCharm也提供了安装第三方包的功能:


十五,面向对象 1.初始对象
我们发现在编写程序过程中使用变量记录数据太乱了,程序也可以和生活一样可以设计表格,打印表格,填写表格一样
在程序中设计表格:也就是称作设计类(class)
在程序中打印表格:也就是称作创建对象
在程序中填写表格,也就是称作为对象属性赋值
2.类的定义
基本语法
案例
3.类和对象
现实世界的事物可以归纳为类和属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6leB5uLz-98)(D:学习资料python课件截图现实事物.png)]
在程序中创建对象的语法:对象名=类名称(),类是程序中的”设计图纸“,要基于图纸的对象才能正常完成工作,这种模式称之为:面向对象编程。如闹钟的生产:
4.构造方法
在前面创建对象及为对象属性赋值都是使用的对象变量=类()和对象变量.属性=字面量,这种方式显得繁琐,为了简化过程,可以使用构造方法为对象属性赋值。——init()——被称为构造方法,在创建类对象时,会将参数自动传递给构造方法构造使用且执行
5.其它内置方法
——init()——构造方法是类内置方法,除此之外还有其它类内置方法
——str()——字符串方法,在定义好类对象后,直接print类对象输出的是类对象的存放地址,内存地址并没什么多大用处,通过这个方法可以控制类转换为自定义的字符串,使直接print类对象输出自定义的字符串
——lt——小于符号比较方法,由于对象中的属性太多,无法直接进行比较,通过——lt——()方法可以自定义对象之间通过比较什么属性来决定大小,注意只能实现大于和小于两种比较,返回值为True或者False
——le——大于等于比较符号方法,与——lt——方法类似,只不过比较符号不相同而已
——eq——相等比较方法,它与——lt——和——le——方法一样都是定义对象比较方法,不过——eq——是判断是否相等,相等返回True,否则False
类内置方法总结
6.封装的概念
将现实世界中事物在类中描述为属性和方法
对于不愿意公开的属性和行为可以定义为私有属性 ,被定义私有属性后不能够被直接使用,但是可以被我们类中其它成员使用
私有成员的意义:仅供内部使用,不对外开发
7.继承
在现实生活中手机的版本更新都是基于旧版本之上的修改,在编程过程中同样存在着程序的更新,也是基于之前旧版版本的修改,如手机类中有手机序列号属性,版本更新了面部识别属性,在新类中重新定义序列号属性就显得麻烦,为了解决这个问题,就需要使用到继承
单继承基本语法:
案例
多继承基本语法:
案例
8.复写父类方法
子类在继承父类的成员属性和成员方法后,如果对其不满意,可以进行复写,在子类中中重新定义同名的属性或方法即可
案例
9.类型注解
在python3.5版本引入了类型注解,以方便静态类型检查工具,IDE等第三方工具,帮助第三方工具对代码进行类型推断,协助做代码提示,支持变量的类型注解函数(方法)参数列表或返回值的类型注解,基本语法:变量:类型
案例
一般,无法直接看出变量类型之时会添加变量的类型注解
Union类型 ,对于混合类型字典或集合一般不好直接添加类型注解,这时就需要使用Union类型添加混合类型注解
10.多态
多态指完成某个行为时,使用不同的对象会得到不同状态
多态常用在继承关系上
比如:函数(方法)形参声明接受父类对象,而实际传入的父类的子类对象进行工作,即以父类做定义声明,以子类做实际工作,用以获得同一行为,不同状态
案例
多态还应用于抽象类(接口),抽象类:含有抽象方法的类称之为抽象类,抽象方法:方法体是空实现的(pass)称之为抽象方法。举一个很现实的例子,空调制造标准需要制冷,制热,摆风,但是对于不同的生产厂商拥有自己核心制造技术。第一层的空调制造标准并不提供核心技术,在编程就等同于提供空实现方法,而每个厂商都拥有自己的核心制造技术就等同于子类来通过不同内容实现父类方法。
十六,高阶技巧 1.闭包
在开发过程中,如银行程序开发,常常面临着安全问题,如用户余额值定义为全局变量存在着被篡改的危险,但定义为局部变量面临着用户存款或者取款余额不变的问题,闭包就能很好的解决这类问题
如果要在内部函数中修改外部函数的变量的值需要在内部函数中使用nonlocal关键字
使用闭包的优点:无需定义全局变量即可实现通过函数,持续的访问、修改某个值。闭包使用的变量的所用于在函数内,难以被错误的调用修改
闭包的缺点:由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放,一直占用内存 2.装饰器
装饰器其实也是一种闭包, 其功能就是在不破坏目标函数原有的代码和功能的前提下,为目标函数增加新功能。
装饰器的注释写法,这种方式简化了代码,注意两者的区别,后者直接调用目标函数,不需要再声明目标函数是外部函数的添加功能。
3.单例模式
创建类的实例后,就可以得到一个完整的、独立的类对象。
它们的内存地址是不相同的,即两个完全独立的对象。某些场景下, 我们需要一个类无论获取多少次类对象,都仅仅提供一个具体的实例
定义: 保证一个类只有一个实例,并提供一个访问它的全局访问点
适用场景:当一个类只能有一个实例,而客户可以从一个众所周知的访问点访问它时。
优点:节省内存,节省创建对象的开销 4.工厂模式
需要大量创建一个类的实例的时候, 可以使用工厂模式。
即,从原生的使用类的构造去创建对象的形式迁移到,基于工厂提供的方法去创建对象的形式。
5.多线程
进程: 就是一个程序,运行在系统之上,那么便称之这个程序为一个运行进程,并分配进程ID方便系统管理。
线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作,是进程的实际工作最小单位。
进程之间是内存隔离的, 即不同的进程拥有各自的内存空间。 这就类似于不同的公司拥有不同的办公场所。
线程之间是内存共享的,线程是属于进程的,一个进程内的多个线程之间是共享这个进程所拥有的内存空间的。
进程和线程都可以并行执行
Python的多线程可以通过threading模块来实现。
带参数的线程启动
6.网络编程
socket (简称 套接字) 是进程之间通信一个工具,负责进程之间的网络数据传输。
Socket服务端:等待其它进程的连接、可接受发来的消息、可以回复消息
Socket客户端:主动连接服务端、可以发送消息、可以接收回复
服务端
客户端
7.正则表达式
正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。
1.re.match(匹配规则, 被匹配字符串)
从被匹配字符串开头进行匹配, 匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空。
2.search(匹配规则, 被匹配字符串)
全局匹配,搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后
3.findall(匹配规则, 被匹配字符串)
全局匹配,匹配整个字符串,找出全部匹配项,返回类型为list集合类型
4.元字符匹配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CigXK1AZ-99)(D:学习资料python课件截图元字符匹配.png)]
[]内可以写:[a-zA-Z0-9] 这三种范围组合或指定单个字符如[aceDFG135]
数量匹配

边界匹配

分组匹配
8.递归
递归在编程中是一种非常重要的算法
递归: 即方法(函数)自己调用自己的一种特殊编程写法
注意退出的条件,否则容易变成无限递归
注意返回值的传递,确保从最内层,层层传递到最外层
os模块的3个方法
os.listdir,列出指定目录下的内容
os.path.isdir,判断给定路径是否是文件夹,是返回True,否返回False
os.path.exists,判断给定路径是否存在,存在返回True,否则返回False 十七,pymysql基础
数据定义:DDL(Data Definition Language)
库的创建删除、表的创建删除等
数据操纵:DML(Data Manipulation Language)
新增数据、删除数据、修改数据等
数据控制:DCL(Data Control Language)
新增用户、删除用户、密码修改、权限管理等
数据查询:DQL(Data Query Language)
基于需求查询和计算数据 1.DDL

2.DML


3.DQL


4.pymysql
首先安装pymysql第三方库
pip install pymysql
连接到mysql数据库
使用pymysql创建表
插入数据
十八,pyspark基础 什么是spark?
定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。简单来说,Spark是一款分布式的计算框架,用于调度成百上千的服务器集群,计算TB、PB乃至EB级别的海量数据
pyspark的编程模型

模型归纳为:
准备数据到RDD -> RDD迭代计算 -> RDD导出为list、文本文件等
即:源数据 -> RDD -> 结果数据 数据输入
RDD全称为:弹性分布式数据集(Resilient Distributed Datasets)PySpark针对数据的处理,都是以RDD对象作为载体,即:数据存储在RDD内,各类数据的计算方法,也都是RDD的成员方法
pyspark支持通过SparkContext对象的parallelize成员方法将python数据容器转换为RDD对象
将文件转换问rdd对象
RDD内置方法(算子)
map方法:将rdd的数据一条条处理,处理逻辑是基于map算子中接受的处理函数,返回新的rdd对象,注意使用rdd内置方法需要配置Spark读取到python解释器,否则就无法使用rdd内置方法
flatMap算子:对rdd执行map操作,然后进行解除嵌套操作,它比map算子多了一个解除嵌套的功能,解除的方向是从内向外
reductBykey算子,争对KV型rdd,自动按照key分组,然后更具提供的聚合逻辑,完成组内的数据的聚合操作

filter算子,过滤想要的数据进行保留
distict算子:对rdd数据进行去重返回新的rdd
sortBy算子:对rdd数据进行排序,基于自定义的排序依据
数据输出
collect算子:将rdd对象各个分区内的数据,统一收集到Driver,形成一个list集合对象
用法:rdd.collect()
reduce算子:对rdd数据集按照自定义的逻辑进行聚合,聚合模式

take算子:将rdd的前N个元素组成list返回
count算子:计算rdd中有多少个算子
数据输出和数据输入一样有两种方式,不但可以直接打印输出,还可以将数据保存到文件中
saveAsTextFile算子:将rdd中的数据写入文本文件中,支持本地写出,hdfs等文件系统,注意:将rdd中的数据写入到文件中时需要安装hadoopx相关依赖,否则会报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrJQ76wX-03)(D:学习资料python课件截图注意事项.png)]
修改rdd分区
十九,数据可视化基础
JSON:JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
JSON本质上是一个带有特定格式的字符串
安装pyspark第三方库
pip install pyspark或pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark
获取PySpark执行环境入口对象,注意PySpark需要安装jdk才能使用
1.JSON数据格式
2.pyecharts模块
Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是门富有表达力的语言,很适合用于数据处理.
要使用pyecharts模块首先需要导入第三方包,

基础折线图

set_global_opts全局配置方法
数据处理
网上下载过来的数据有些不符合JSON格式规范,我们就需要将他进行数据处理,转换为JSON格式的数据
基本地图
基本柱状图
时间线-Timeline():建一个
一维的x轴,轴上每一个点就是一个图表对象 二十,课后练习案例 pymysql综合案例
读取1月和2月数据集并且存储到数据库中
pyspark案例
1.使用学习到的内容,完成:读取文件,统计文件内,单词的出现数量
2.使用Spark读取文件进行计算:各个城市销售额排名,从大到小
全部城市,有哪些商品类别在售卖,北京市有哪些商品类别在售卖
数据可视化综合案例
1.全球2020年确诊人数统计图

2.国内疫情地图

3.省内疫情地图

3.动态柱状图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://daima100.com/ji-huo-bi-ji/1817.html