一、包的具体使用
1.什么是包 包就是内部含有__init__文件的文件夹,该文件夹可包含多个模块文件,包也可以理解为管理多个模块文件的文件夹 2.包有什么用 包的作用就是包含多个模块,例如我们下载第三方模块numpy时,模块下会产生一个numpy文件夹,里面包含了numpy管理的多个模块 3.使用 eg: from demo import a,b # 导入包名就是导入里面的__init__文件,该文件内有什么名字就可以通过包名点什么名字使用
在Python解释器中,包文件夹内有没有__init__.py文件已经不重要了,但是在Python2中解释器中文件夹必须用__init__.py文件才能当做一个包,不然他只是一个文件
二、编程思想的转变
目前会经历的三个阶段: 1.小白阶段 懂得不多,写代码的时候只会像面条一样从上往下的逻辑写,全部堆在一起 2.函数阶段 有了一点的函数思维了,根据功能封装不同的函数,然后进行调用 3.模块阶段 能够应用别人的东西写简洁的代码,根据功能的不同拆分成不同的py文件
三、软件开发目录规范
为什么要规范文件目录? 为了程序的可读性和可维护性,当我们吧项目文件进行分类之后大大提高了后期的维护和查看,只需要到对应的文件夹名下找到具体的文件进行查看就好了
文件名 | 作用 | 写法 |
---|---|---|
bin文件夹 | 用于存放项目的启动文件 | start.py |
conf文件夹 | 用于存放配置文件 | setting.py |
core文件夹 | 用于存放核心逻辑文件 | src.py |
db文件夹 | 用于存放数据文件 | userinfo.py |
lib文件夹 | 用于存放程序的公共功能文件 | common.py |
log文件夹 | 用于存放日志文件 | log.log |
interface文件夹 | 用于存放接口文件 | user.py/order.py |
readme文件夹 | 用于存放项目的说明书 | / |
requirements文件夹 | 用于存储程序所需的第三方模块名和版本 | requirements.txt |
四、常见内置模块之collections
1.具名元组namedtuple
from collections import namedtuple point = namedtuple('坐标系',['x','y']) res = point(99,66) print(res) # 坐标系(x=99, y=66) print(res.x) # 99
from collections import namedtuple card = namedtuple('扑克牌', ['num', 'color']) c1 = card('J', '红♠') c2 = card('K', '黑♥') print(c1, c1.num, c1.color) # 扑克牌(num='J', color='红♠') J 红♠ print(c2, c2.num, c2.color) # 扑克牌(num='K', color='黑♥') K 黑♥
2.双端队列deque
from collections import deque a = deque() a.append(11) a.append(22) a.appendleft(999) print(a) # deque([999, 11, 22])
队列与堆栈: 队列:先进先出 堆栈:先进后出
3.有序字典OrderedDict
from collections import OrderedDict d = dict([('a',1),('b',2),('c',3)]) print(d) # {'a': 1, 'b': 2, 'c': 3} od = OrderedDict([('a',1),('b',2),('c',3)]) print(od) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
4.计数Counter
from collections import Counter res = 'ahhgggasdggdhhdsgcsxshshhsggahaaaa' res1 = Counter(res) print(res1) # Counter({'h': 8, 'g': 8, 'a': 7, 's': 6, 'd': 3, 'c': 1, 'x': 1})
五、常见内置模块之时间模块
1.常见时间格式化符号
符号 | 属性 |
---|---|
%y | 表示年份(00-99) |
%m | 表示月份(1-12) |
%d | 表示一年中的天数(1-31) |
%H | 表示24小时制的时数(0-24) |
%I | 表示12小时制的时数(0-12) |
%M | 表示分钟(0-59) |
%S | 表示秒数(0-59) |
%w | 表示星期几 |
%X | 表示当地的日期表示 |
2.时间戳
时间戳表示从1970-1-1-0时到现在经过了多长时间 import time now = time.time() print(now) # 1666168383.992469 print(time.localtime()) # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=33, tm_sec=3, tm_wday=2, tm_yday=292, tm_isdst=0) print(time.strftime('%Y-%M-%d')) # 2022-10-19 print(time.strftime('%Y-%M-%d %H:%M:%S')) # 2022-10-19 16:35:16 print(time.strftime('%Y-%M-%d %X')) # 2022-10-19 16:35:16 # strftime格式化时间
3.格式化时间
from datetime import d=datetime.strptime('2017/9/30','%Y/%m/%d') print(d) # 2017-09-30 00:00:00 e=datetime.strptime('2017年9月30日星期六','%Y年%m月%d日星期六') print(e) f=datetime.strptime('2017年9月30日星期六8时42分24秒','%Y年%m月%d日星期六%H时%M分%S秒') print(f) # strptime 按照特定时间格式将字符串转换为时间类型
六、常见内置模块之随机数模块
产生图片验证码 def get_code(n): code = '' for i in range(n): range_upper = chr(random.randint(65,90)) range_lower = chr(random.randint(97,122)) range_int = str(random.randint(0,9)) temp = random.choice([range_upper,range_lower,range_int]) code += temp return code res = get_code(5) print(res) # 9UhL6