第四周总结

异常处理语法结构

异常处理语法结构

基本语法结构
try:
    待监测的代码
except  错误类型:
    针对上述错误类型制定的方案


万能异常 Exception

try:
    待监测的代码
except Exception as e:
    针对各种常见的错误类型全部统一处理
else:
     try的子代码正常运行结束没有任何异常报错后 再执行else子代码
finally:
    无论try的子代码是否报错 最后都执行finally子代码

可迭代对象、迭代器和生成器

可迭代对象:对象内置有__iter__方法的都称为可迭代对象,简单理解就是能够被for循环的对象,就是可迭代对象。
不可迭代对象:int float bool 函数对象
可迭代对象:str list dict tuple set 文件对象

迭代器:由可迭代对象调用__iter__方法产生,判断的本质是看是否内置有__iter__和__next__,简写iter(),next()
迭代器作用:提供了一种不依赖于索引取值的方式。
注意事项:可迭代对象调用__iter__会成为迭代器对象 迭代器对象如果还调用__iter__不会有任何变化 还是迭代器对象本身。

生成器对象:内置有__iter__和__next__的迭代器对象。
与迭代器区别:迭代器对象是解释器自动提供的,生成器对象是程序员编写出来的。
生成器语法:函数体代码中填写yield关键字

def my_iter():
    print('hello')
    yield
"""
函数体代码中如果有yield关键字,那么函数名加括号并不会执行函数体代码,会生成
一个生成器对象(迭代器对象)
"""

生成器表达式
说白了就是生成器的简化写法 (返回值 for 元素 in 可迭代对象)
tu1 = (i ** 2 for i in range(5))
print(tu1)  # 生成器对象
for i in tu1:
    print(i)
功能:代码优化,节省存储空间

模块

模块的本质:内部具有一定的功能(代码)的py文件

模块的分类

自定义模块:我们自己写的模块文件
内置模块:python解释器提供的模块
第三方模块: 别人写的模块文件(python背后的大佬)

导入模块的两种句式

1.import句式
   以import a 为例研究底层原理
'''
1)先产生执行文件的名称空间
2)执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
3)在执行文件的名称空间中产生一个模块的名字
4)在执行文件中使用该模块名点的方式使用模块名称空间中所有的名字
'''

2.from...import...句式
    以from a import name,func1为例研究底层原理
'''
1)先产生执行文件的名称空间
2)执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
3)在执行文件的名称空间中产生对应的名字绑定模块名称空间中对应的名字
4)在执行文件中直接使用名字就可以访问名称空间中对应的名字
'''

循环导入问题

1.循环导入:两个文件之前彼此导入并且相互使用各自名称空间中的名字容易出错
2.如何解决循环导入问题:
    1)确保名字在使用前就已经准备完毕(变量名放到import前面)
    2)在编写代码的过程中尽可能避免出现循环导入

判断文件类型

if __name__ == '__main__':
    print('我是执行文件 可以运行子代码')
当py文件是执行文件的时候__name__对应的值是__main__
当py文件是被导入文件的时候,__name__对应的值是模块名

模块的查找顺序

内存->内置-->执行文件所在的sys.path(系统环境)

绝对导入与相对导入

绝对导入
    from mymd.aaa.bbb.ccc.ddd import name  #精确到变量名
    from mymd.aaa.bbb.ccc import ddd  #精确到模块名
相对导入
    .在路径中表示当前目录
    ..在路径中表示上一层目录
    ..\.. 在路径中表示上上一层目录
    from . import b  #注意!!! 相对导入只能用于模块文件中,不能在执行文件中使用

包:多个py文件的集合,内部含有__init__.py文件的文件夹(python2强制,python3不强制)

包的使用

使用包的几个模块:
1.from aaa import md1,md2
直接导入包名:
2.import aaa

编程思想的转变

1.面条阶段:所有的代码堆叠在一起
2.函数阶段:根据功能的不同封装不同的函数
3.模块阶段:根据功能的不同拆分成不同的py文件

软件开发目录规范:分类管理

-bin文件夹                 主要存放项目启动文件
    -start.py             启动文件可以放在bin目录下 也可以直接在项目根目录
-conf文件夹                主要存放项目配置文件
    -settings.py          里面存放项目的默认配置一般都是全大写
-core文件夹                主要存放项目核心文件
    -src.py               里面存放项目核心功能
-interface文件夹           主要存放项目接口文件
    -goods.py             根据具体业务逻辑划分对应的文件
    -user.py
    -account.py
-db文件夹
    -userinfo.txt
    -db_handler.py         存放数据库操作相关的代码
-log文件夹                  存放项目日志文件
    -log.log
-lib文件夹                  存放项目公共功能
    -common.py
-readme文件                 主要存放项目相关说明
-requirements.txt           主要存放项目所需模块及版本

常用内置模块之collections模块

具名元组  namedtuple
队列:先进先出
堆栈:先进后出

常用内置模块之时间模块

时间戳:从19701100分到现在为止的秒数
结构化时间:给计算机看的,人看不适应
格式化时间:主要给人看的
time和datetime模块
time.time() 时间戳
time.localtime()结构化时间
time.strftime('%Y-%m-%d %H-%M-%S') 格式化时间
time.strftime('%Y-%m-%d %X') 格式化时间
time.sleep() 让程序原地阻塞指定的秒数

import datetime
ctime = datetime.date.today()
time_del = datetime.timedelta(days=3)
print(ctime+time_del)  #三天后,适用于程序定时任务

常用内置模块之随机数模块

import random
random.random()  随机产生0-1之间小数
random.random(1,6)  随机产生1-6之间的整数
random.randrange(1,100,1)  随机产生1-100之间的整数,步长1
random.choice([1,2,3])  随机抽取一个样本
random.choices([1,2,3])  随机抽取一个样本[]
random.sample([1,2,3,4,5,6],2)   随机抽取指定样本数,样本数为2
random.shuffle(list)  随机打乱数据

os模块

os模块(主要和操作系统打交道)
import os
os.mkdir()        创建单级空目录
os.makedirs()     创建多级空目录
os.rmdir()        删除单级空目录
os.removedirs()   删除多级空目录,文件不包含
os.listdir()      列举当前执行文件所在路径
os.rename()       重命名文件
os.remove()       删除文件
os.getcwd()       获取当前目录
os.chdir()        切换目录
os.path.abspath()  获取执行文件绝对路径
os.path.dirname()  获取执行文件所在目录路径
os.path.exists()   判断路径是否存在
os.path.isfile()   判断文件是否存在
os.path.isdir()    判断目录是否存在
os.path.join()     路径拼接
os.path.getsize()  获取文件大小

sys模块

import sys
sys.path  获取执行文件的sys.path路径
sys.platform  获取执行的系统环境版本
sys.argv  argv表示获取命令行参数,文件表示第一个,文件后的参数表示第二个,以此类推

json模块

json模块
序列化模块,可以打破语言限制实现不同编程语言之间数据交互
json格式的数据形式:字符串类型且引号都是双引号

针对数据:
json.dumps() 序列化
json.loads() 反序列化

针对文件:
json.dump()  序列化
json.load()  反序列化
posted @   悠悠-winter  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示