首页 > 其他分享 >第四周自我回顾自我回顾

第四周自我回顾自我回顾

时间:2022-10-23 21:44:27浏览次数:38  
标签:文件 回顾 代码 生成器 自我 导入 模块 四周 目录

目录

一、异常的捕获与处理

异常的错误类型

异常就是我们平时说的bug,也叫报错

异常根据错误的原因分成很多类型比如:

KeyError

关键字错误,查找字典不存在的键

NameError

名称错误,比如引用的时候用了不存在的名字

ValueError

数据值错误,数据值不符合设定的条件

SystemError

一些语法错误

TypeError

数据类型使用错误

IndexError

索引错误

StopIteration

迭代器中出现,当迭代对象用尽再次迭代就会报错

Exception和BaseException

这两个是万能错误,包含所有的错误类型,但是这里要注意,BaseException是Exception的父系,也就是它的功能更强大

异常处理的语法结构和讲解

try:

​ 需要监测错误的代码

except 错误类型 as e:

​ 当前错误类型下的应对措施

这里我们可以看到代码分成两部分,上面部分是用于监测代码是否有错误的,下面部分需要指定错误类型,然后才能使用相应的应对措施。

同时as e可以不写,当我们写上的时候会输出系统的错误提示

然后我们也要知道对应的错误类型才能进行处理错误的操作,如果不是这个错误类型,就会直接报错,但是我们可以用多个excetp关键字+错误类型来包含所有的错误可能性,同时我们也可以使用上面说的万能错误来接收,当我们在检测到多个错误的时候就会检测第一个错误,然后停止运行,后面的都不会检测了

之后我们说到异常语法结构还可以跟上else和finally,当代码正常运行没有报错的时候,就会进入else下,运行下方代码,但是当运行到finally的时候,不管有没有监测到异常都会运行下方的代码,都会运行

虽然这个异常监测和处理的语法可以很大程度的减少我们代码的错误,但是这并不意味着我们需要频繁使用他来减少运行时候的错误,相反我们应该尽量少的使用他,同时在使用的时候,我们也应该让try下方的代码尽量少,

主动抛出异常

主动抛出异常分成两种,一种是断言,一种是符合条件主动抛出异常

断言

断言用到了assert关键字

格式如下:

assert 判断语句

如果我们的代码执行结果符合断言语句的判断,那么就继续运行,这个断言语句就等于没有出现过一样,但是当代码的执行结果不符合我们预期的断言结果,就会主动抛出异常中断代码运行。

主动抛出异常

主动抛出异常用到了一格raise关键字

当我们在运行代码的时候,运行到raise处就会直接报错停止代码运行

异常处理应用举例

我们在使用for循环的时候就是用上了类似的方法,当我们把生成器对象变成迭代器对象之后一次次的使用双下next一次次取值,当取完值之后还会继续使用双下next进行一次取值,这个时候就会报错,然后我们就可以使用异常处理的代码让代码结束运行

二、生成器

什么是生成器

生成器就是迭代器的一种

两者的区别:

迭代器的类型对象都是python的数据类型和文件

但是生成器的类型对象通常是我们编写的代码,其他特性都和迭代器一样

生成器的两种形式

1、生成器表达式

l1 = (i ** 2 for i in range(100))

基本形式跟生成式一样

但是外面是代表元组的括号,内部是进行的操作和操作对象

2、自定义生成器

自定义生成器就是定义一个函数,然后内部不写return使用yield来控制程序运行

格式

def outter():

​ 内部代码

​ yield

当我们运行自定义生成器的函数时,这时候这个函数就是变成了一个迭代器对象,相当于用了双下iter,然后当我们使用一次双下next就会运行一次代码,到yield关键字处就会停止运行,当我们下一次运行双下next的时候就会从停止位置往下运行,运行到下一个yield又会停止。需要注意,yield关键字也可以返回返回值,跟return一样,这里还要说一个yield 的冷门功能,当我们用变量绑定yield的时候,在外面调用的时候可以用send方法给这个变量传值并运行一次双下next。

三、索引取值和迭代取值的差异

四、模块

1、模块的本质

模块就是具有一定功能的py文件

python的模块可以直接导入对应的功能,非常好用,降低了功能实现的难度,在早期,其他语言的程序员喜欢叫python语言的使用者为调包侠,但是后来由于python调包的功能可以实现很复杂的功能,也变得使用面更为广泛了,其他语言的程序员也开始使用python

2、模块的多种表现形式

1.py文件

2.包(包含py文件的文件夹,内部有双下init)

3.被编译为共享库或ddl的c或c++扩展

4、使用c语言编写并链接到python解释器的内置模块

3、模块的分类(来源)

1.自己编写的py文件

2.内置模块

3.第三方python模块(大佬写的模块)

4、模块的两种导入语句

import 模块名称

from 模块名称 import 名称

两种模块在导入单个的py文件的时候需要注意,import是导入整个模块,from是导入单个的名称

在使用的时候可以看到,import方式导入的模块需要在用:模块名称.名称的形式来调用,from可以直接用名称调用,如果想要调所有的名称,可以用*号代替。使用星号的时候也可以用双下all来设置外界能获得的名称,但是不能影响到import方式导入的模块

import在使用的时候相当于给这个执行文件一个模块名称,然后另外建立了一个名称空间存放自己的名称,当调用模块中的名称就传过去。如果使用from方式的话就会直接把这个名称传给被执行文件的全局名称空间,如果有重复的名称会产生名称的顶替

5、其他相关知识补充

1.当我们在调用多个模块的时候,可以用逗号隔开,连写多个,但是需要注意,最好根据模块的功能来编写,功能相似的一起导入

2.导入模块的时候如果名称很复杂,我们可以用as 名称的方式进行重命名,在代码中调用的时候用这个自己命名的名称就可以达成目的

3.如果重复导入模块,容易出现错误,因此不推荐,但是真的遇到的时候,需要知道还是一样的流程,还是从执行文件运行,到了导入模块之后运行被导入文件,在被导入文件中出现导入执行文件的动作,这个时候就是在走一遍执行文件的代码,然后再运行导入文件中导入语句后面的代码,执行完导入文件后回到执行文件中运行导入文件后面的代码。中间运行的时候还要注意导入语句的位置,不能出现先调用后定义的情况。

6、判断文件类型

在运行模块导入操作的时候我们需要分清楚哪个是执行文件哪个是模块文件,这里用到了一个方法

双下name,当这个方法出现在执行文件中会返回双下main,当这个方法出现在模块文件中会返回模块名称

7、模块的查找顺序

1.内存

内存中的已经运行起来的模块会先被使用,我们可导入模块然后使用time.sleep停止几秒,期间删除模块文件,最后会发现程序仍能运行一次

2.内置模块

当我们在使用模块的时候会先去内置模块中查找,这里需要注意,如果我们的创建的模块名称跟内置模块的一样,会导致模块不被调用,被调用的会是内置模块

3.sys.path

这是python 解释器的环境变量,也就是一个查找的路径,在前两个地方找不到就会根据这里的路径来查找模块,如果找不到就会报错

8、绝对导入和相对导入

绝对导入就是在导入的时候使用文件的绝对路径,相对导入就是在导入的时候用到几个特殊符号:

.表示当前路径位置

..表示上一级目录位置

..‘\’..返回上上级目录,引号不要,凸显撬棍符号用的

9、包的概念

包就是内部有py文件,有双下init.py文件的文件夹,导入包的语句也是import和from

10、包的具体使用

导入模块的时候需要注意双下init,python2中必须有,python3可以没有,但是为了兼容性考虑我们需要写上,如果只是导入几个模块,可以使用from语句来导入指定的模块

五、编程思想的转变

分成三个阶段

第一个阶段是面条阶段,在编写的时候就是根据顺序一一执行代码。

第二个阶段就是函数阶段,函数阶段就是把功能相似的代码封装起来,调用的时候更方便,代码也会看着更整洁,对功能进行打包

第三个阶段就是模块阶段,使用模块把功能类似的代码放到一起,整合优化

六、软件开发目录规范

1、bin目录

内部存放程序的执行文件,文件名称可以是start.py

2、conf目录

内部存放配置文件,比如我们的桌面上的一些设置就是存在对应的配置文件中的,文件名称一般是settings.py

3、core目录

内部存放核心功能的代码,文件名称一般是src.py

虽然说是存放核心功能,但是并不意味着主体功能就需要放在这里,可以放到下面的interface目录

4、lib目录

内部存放一些公共功能的代码文件,文件名称一般是common.py

5、db目录

用于存储数据文件,比如之前编写的员工信息管理系统,我们可以把员工信息的txt文件放到这个目录下

6、interface目录

内部存放端口文件,上面说了,核心功能的文件写在core目录中,但是主体功能是从interface目录下的代码中调用过去的。需要根据具体的业务逻辑划分对应的文件,通常的命名是goods.py等见名知意的名字

7、log目录

这里是日志目录

内部文件就是记录一下平时我们的操作记录

文件名一般是log.log

8、readme文件

通常是一个文本文件用于说明项目相关信息

9、requirements.txt文件

内部存项目所需要的模块以及版本信息

七、常用内置模块

1、collections模块

1.具名元组:namedtuple
2.双向列表:deque
3.有序字典:OrderedDict
4.字典集合:ChainMap()
5.当 key 不存在时返回默认值:defaultdict
6.可以重新排序的字典:OrderedDict
7.计数器:Counter

2、时间模块

1.time模块

三种时间表现形式
1.时间戳(timestamp)
2.结构化时间(struct_time)
3.格式化时间(Format String)

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)

%M 分钟数(00=59)
%S 秒(00-59)

%x 本地相应的日期表示
%X 本地相应的时间表示

gmtime

localtime

把时间戳转化成结构化时间

localtime

把结构化时间转化成时间戳

strftime

把结构化时间转化成字符串时间

strptime

字符串时间变成结构化时间

2.datatime模块

1.datetime.now() # 获取当前datetime

datetime.utcnow() # 获取当前格林威治时间*

2.datetime(2017, 5, 23, 12, 20) # 用指定日期时间创建datetime

3.字符串转换成datetime类型:

'2017年9月30日星期六'

e=datetime.strptime('2017年9月30日星期六','%Y年%m月%d日星期六')

3、random模块

返回随机数

random

返回0-1之间的小数

uniform(1,3)

大于1小于3的小数

randint

randrange

返回随机整数,括号内可以指定范围

choice/choices

没有s就是返回数据值本身的类型,有s就是返回一个列表类型的值

sample

随机返回几个值,第二个参数是设置返回的个数

shuffle

打乱一组数据值的顺序

4、os模块

针对操作系统的交互

1.mkdir/makedirs

创建目录,mkdir是创建路径下的单个文件夹,makedirs是创建路径下的一系列文件夹

2.rmdir/removedirs

rrmdir是删除单个文件夹,removedirs是删除路径下的一系列文件夹,但是内部不能有文件,得是空文件夹

3.listdir

可以写上参数(路径),返回路径下的所有文件名称

4.rename/remove

重命名/删除文件

5.getcwd/chdir

获取当前目录/更改目录(写上'..'返回上一级目录)

6.abspath/dirname

可以在括号内写上双下滑线file动态获取当前路径

7.exists/isfile/isdir

判断文件或者目录是否存在

8.join

路径拼接(重要)

9.getsize

获取文件大小(字节)

5、sys模块

sys模块是针对python解释器的一个模块

1.arge

实现程序外部向程序传参,在pycharm中无法实现传参

2.path

获取python解释器的环境变量

3.getrecursionlimit

获取python解释器的最大递归深度

4.setrecursionlimit

修改解释器的最大递归深度

5.version

返回当前解释器的版本

6.platform

返回平台信息

7.exit

arg = 0表示程序正常退出,其他异常退出的情况就会出现别的数值

6、json模块

分成四个方法。两个是针对数据值,两个针对文件

dumps把python类型的数据值变成json类型

loads把json类型的数据值变成python类型

dump是把数据值存到文件中

load是把数据值从文件中取出来变成python格式


标签:文件,回顾,代码,生成器,自我,导入,模块,四周,目录
From: https://www.cnblogs.com/zhihuanzzh/p/16819668.html

相关文章

  • 第四周总结复习
    一周总结异常处理异常常见类型AttributeError#访问的对象属性不存在ImportError#无法导入模块或者对象,主要是路径有误或名称错误SyntaxError#pytho......
  • 10.17-10.21周末回顾
    目录一、异常处理语法结构二、生成器对象三、模块2.导入模块的两种语句1import句式四、软件开发目录五、python常用内置模块1.collections模块1具名元组namedtuple2双......
  • chap4 循环结构、chap6 回顾数据类型和表达式 学习总结
     在我认为循环结构是c语言中较为重要的部分,他在使用中也能发挥很大的作用,无论是for还是while或是dowhile,都有他们各自的特点,通常他们在一样的的题目中都可以用,但是在一......
  • 第四周总结
    第四周总结目录第四周总结异常处理异常常见类型异常处理语法结构异常处理补充异常处理实战应用生成器生成器对象yield冷门用法生成器表达式自定义生成器range索引取值与迭......
  • 23、ssm整合回顾-spring层
    1、spring-dao.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XM......
  • 模块回顾
    知识回顾异常常见类型SyntanxError 语法错误NameError 名字错误IndexError 索引错误KeyError 键错误异常处理语法结构1.基本语法try: 待检测的代码ex......
  • 第四周总结
    第四周总结异常处理语法结构1.基本语法结构try:待监测的代码except错误类型:针对上述错误制定的方案2.查看错误信息try:......
  • 第四周总结
    目录异常处理语法结构异常处理语法结构可迭代对象、迭代器和生成器异常处理语法结构异常处理语法结构基本语法结构try:待监测的代码except错误类型:针对上......
  • 【10.15-10.21】博客精彩回顾
    一、优秀文章推荐1.​​SQL进阶篇之高级应用​​2.​​手写自定义springboot-starter,感受框架的魅力和原理​​3.​​【数据结构(c语言版)】树的概念以及结构​​4.​​驱动......
  • 回顾缓存穿透、缓存雪崩、缓存击穿及封装Redis工具类
    缓存穿透问题的解决思路缓存穿透:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。常见的解决方案有两种:缓存......