首页 > 其他分享 >10月第二次周报

10月第二次周报

时间:2022-10-23 19:01:00浏览次数:55  
标签:10 name 文件 json 模块 import 第二次 os 周报

目录

异常

程序在运行时可能出现的异常,我们常说为bug

在错误中:

​ 语法错误是不被允许的,如果出现需要立即修改,否则提桶跑路。

​ 逻辑错误是可以被允许的,应为是一眼不能直接发现的,在程序运行中可能会出现。

异常处理语法

try:

​ 待监测代码

except 错误类型 as f:

​ 错误处理解决方案

except Exceptio(万能错误类型) as f:

​ 错误处理解决方案

else:

​ 不出错执行的方案

finally:

​ 无论出不出错,都执行

断言

name = 'xiao'

assert isinstance(name,int)

主动抛异常

a = 'name'

if a =='name':

​ raise Exception('呵呵')

else:

​ print('啊啊啊')

生成器

简化生成器

(i*2 for i in range(5))

自定义生成器

本质是内部有双下iter,和双下next放法的迭代器

区别是生成器是程序员创建的,迭代器是解释器自动创建的

使用yield关键字

def 函数名():

​ 函数体代码

​ yield 返回值 # 遇到yield立马停止返回返回值

​ 函数体代码

​ yield 返回值

​ 函数体代码

​ yield 返回值

res = 函数名() 不会立即执行需要使用next(res)方法来一次一次取数据,如果取完还使用next(res) 则会报错

yield冷门用法

# 生成器也是可迭代对象我们也可以通过for 循环依次进入生成器中取值
def data(user, skills=None):
    print(f'{user}准备使用')
    while True:
        skills = yield  # 通过sned方法获取数据 并赋值给前面的skills变量名
        print(f'{user}正在使用{skills}')

res = data('tom')
res.__next__()
res.send('R:天崩地裂')  # send() 将括号内的数据传给yield前面的变量名 2.再自动调用__next__
res.send('W:横扫千军')

模块

可以看作就是py文件内具有一定功能的python代码

模块在导入时,多次导入只会导入一次,后续导入则不执行

模块的分类

自定义模块

内置模块

第三方模块 其他大佬开发的

模块查找的顺序

内存空间

内置空间

项目环境路径

导入模块的两种方式

​ import 模块名

底层原理
1.先创建执行文件命名空间,开始执行执行代码。import 模块名
2.创建模块文件命名空间,执行模块里面的代码

3.执行文件采用点的方式调用模块文件功能代码

​ from ... import ...

底层原理
1.先创建执行文件命名空间,开始执行执行文件代码
from ...  import ...
2.创建模块文件命名空间,执行模块里面的代码

3.把模块文件命名空间的变量名,一一绑定给执行文件命名空间
4.执行文件采用点的方式调用模块文件功能代码

循环导入

两个py文件互相导入,会出现报错,就是在定义之前,使用变量名,就会报错
底层原理
模块a导入模块b
import b
name = '1'
a.name

import a
name = '2'
a.name
这样会报错,在导入前就已经使用了

name = '2'
import a
a.name
这样就不会报错了

导包时一定要确定哪个时执行文件,哪个是模块文件
可以使用__name__ 判断 如果 等于 __main__ 者为执行文件,否则是模块文件

导包

包其实就是含有_init_.py文件的文件夹python3中对于包不是很敏感,但是为了兼容python2,还是加上_init_.py文件,导包的时候其实导入的就是init文件

软件开发目录

bin 项目启动文件夹
	start.py 项目启动文件
conf 项目配置文件夹
	settings.py 项目配置文件
core 项目核心目录
	src.py 项目核心文件
interface 项目接口文件按
	根据业务逻辑拆分文件
db 项目数据文件夹
	db_handle.py 项目数据库文件
log 日志文件夹
	log.log日志文件
lib 项目公共功能文件夹
	common.py 项目公共功能文件
readme 项目介绍文件
requirements.txt 项目环境,所需模块,版本

编程思想的转变

细绳型,按照顺序一步一步向下执行,不容易修改

​ 类似于把所有东西放到一个文件里面

函数型,把不同的功能,拆分利于维护和修改。

​ 类似于把各种不同文件,视频文件,音频文件,图片文件。文本文件,放到一个盘里

模块型,把不同的功能放到不同文件,更有利于功能的维护,和开发

​ 类似于把不同文件放到不同盘符,更容易查找和修改。

内置模块

collections模块
具名元组
from collections import nametuple
队列
from collections import deque
顺序字典
from collections import orderdict
计数
from collections import Counter
时间模块
time
import time
time.time()  # 获取当前时间戳
time.strftime()  # 格式化时间
time.strptime()  # 格式化转结构化
time.localtime()  # 结构化时间
time.sleep()  # 程序执行后会,阻塞几秒中
datetime
from datetime import datetime,date
datetime.today()  # 获取当前时间
datetime.now()  # 获取当前时间

datetime.today().strftime()  # 格式化时间

datetime.today().strptime()

date.today()
datetime.strftime()

datetime  年月日时分秒
date 年月日

random 随机模块
import random
import string
"""验证码"""
def codes(num):
    
    re_code = ''
	for i in range(num):
        upwords = random.choice(string.ascii_uppercase)
        lowords = random.choice(string.ascii_lowercase)
        numwords = random.choic(string.digits)

        code = random.choice(upwords,lowords,numwords)
        re_code += code
    return re_code
    

os模块  #主要与系统打交道
os.mkdir()
os.makedirs()
os.rmdir()
os.removedirs()
os.remove()
os.listdir()
os.getcwd()
os.char()  # 切换路径
os.path.dirname()
os.path.absfile()
os.path.join()
os.path.exists()
os.path.isfile()
os.path.isdir()
sys模块  # 主要与解释打交道
sys.path  执行环境变量
sys.version 查看解释器版本
sys.argv  # 就受cmd传来的数据
json模块
不同语言无法直接进行数据交换,但是可以通过json数据来进行数据交换,
json格式字符串,几乎所有的编程语言都能识别,转换成语言中对应的数据类型,所有可以用来进行,不同语言间的数据交换

json的内置方法
import json
	操作数据值类型
    name = {
        '1':'123',
        '2':"456"
    }
    res = json.dumps(name)  # 把字典类型转换成json格式字符串
    json.loads(res)  # 把json格式字符串转换成python中的字典
    
    
    操作文件类型
    with open(文件路径,打开方式) as f:
        json.dump(name,f)  # 把字典数据写入文件,
        res = json.dumps(name)
        f.write(res)
        
        json.load(f)  # 把文件内json数据类型,转换成字典数据类型
        底层其实就是
        res = f.read()
        json.loads(res)
 

标签:10,name,文件,json,模块,import,第二次,os,周报
From: https://www.cnblogs.com/clever-cat/p/16819155.html

相关文章

  • Web前端10
    HTML网页结构下面是HTML文档的基本结构,前面我们已经做了示例代码的展示:......
  • MILIANKE-CZ01-7010/7020400-核心模块硬件手册(ZYNQ)
    1产品概述    自2017年MLK-CZ01-7010/7020-400(MZ7XCORE400)系列开发平台发布以来,该系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图......
  • 10.stm32启动文件详解
    ......
  • 10.23学习总结
    10.23学习总结目录10.23学习总结一、常见内置函数二、可迭代对象三、迭代器对象四、生成器对象五、for循环的本质六、异常捕获七、异常捕获语法八、迭代取值与索引取值的......
  • ① 定义一个大小为10 的整形数组a; ② 从键盘输入10 个整数,放置到数组a 中; ③ 输出数组
    publicstaticvoidmain(String[]args){ Scannerinput=newScanner(System.in); int[]a=newint[10];//定义一个数组 //给数组的10个元素赋值 for(inti=0;i......
  • 周日1610班级《小球弹弹弹》
    importpygamepygame.init()canvas=pygame.display.set_mode((800,450))#生成一个长宽800/450的窗口pygame.display.set_caption('小球弹弹弹!')bg=pygame.image.......
  • leetcode1002-查找共用字符
    1002.查找共用字符classSolution{public:vector<string>commonChars(vector<string>&words){intsize=words.size();vector<string>res......
  • AT24C02 by stm32f103 hal
    AT24C02是一款拥有256bytes(32Page)的EEPROM.一:特点(部分)1:双线接口;2:双向数据传输协议;3:400KHz波特率;4:硬件写保护;5:最大5ms写入同步;6:100万次写操作;7:100年数据存储。......
  • MILIANKE-CK03-900核心模块-325T/410T(MK7X900)
    1产品概述KintexMK7X900B是米联客电子Kintex-7系列开发平台的全新高端产品。其核心模块集成电源管理:KintexMK7X900B:1.0V核心电源,最大输出24A。用户基于核心模块设计功......
  • MILIANKE-CA01-484核心模块-35T/100T硬件手册
    1产品概述    MA703-35T/100TArtix-7系列开发平台是米联客推出的一款高性价比的核心板。该系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备......