Python基础day23:绝对导入和相对导入、模块化编程简介、软件开发目录规范、常见内置模块collections和time
day23今日内容概要:
1.绝对导入与相对导入
2.包的概念(package)
3.模块化编程思想简介
4.软件开发目录规范
5.常见内置函数:collections和time
6.作业(将员工管理系统用模块化编程,结合软件开发目录规范来封装)
今日内容详解
1.绝对导入和相对导入
PS:只要存在import导入模块的操作,那么sys.path(程序系统环境变量)永远以当前执行文件的根目录为参考路径。
1.1.绝对导入:
句式:from 文件夹名 import py文件名
分析:这里的文件夹必须包含在当前执行文件的根目录下,可单层也可多层,
具体多少层路径需要在from后面采用 ad1.ad2.ad3 的形式注明
1.2.相对导入:
句式:from . import py文件名 或者是 from .. import py文件名
拓展知识:单句点符. 表示当前文件路径
双句点符.. 表示当前路径的上一层路径
../.. 表示上上层
分析:所以from . import py文件名 表示从关键字import所在的文件根目录下导入一个py文件,
from .. import py文件名 表示从当前文件根目录的上一层导入一个py文件
总结:相对导入依赖于关键字import所在的那个文件根目录路径,适合用来模块之间导入(前提是模块与模块在同一个根目录下),但是当模块比较多的时候还是容易找不到模块而报错。
而绝对导入依赖于当前执行文件的根目录路径,更不容易出现找不到模块而报错的情况,更加推荐使用绝对导入的方法来导入模块。
2.包的概念(package)
概念:“包”实际上就是文件夹,只是在文件夹里面多了一个__init__.py文件,而在这个__init__.py文件里面你可以配置这个文件夹里面哪些模块可以被调用。实际上在Python3里面对包和文件夹的区别已经不大了。
3.模块化编程简介
概念:类似前期将一段具有特定功能的代码封装成一个函数,需要的时候直接调用;而模块化编程就是将更多的代码或者定义好的函数、变量….封装成一个模块,当需要使用模块里面的功能时,直接导入这个模块即可。
4.软件开发目录规范
目的:为了方便代码的管理,项目的维护,调试等,将具有特定功能的文件(.py .TXT .log)分类放进一个指定的文件夹内
4.1规范的目录框架:
bin ->start.py 存放启动文件
configure ->setting.py 存放配置文件
core -> src.py 存放项目的核心逻辑代码文件
library -> common.py 存放各模块之间通用的文件
database -> user_data.txt 存放项目的数据库文件
interface -> order.py 存放项目的拓展接口文件
log -> log.txt 存放项目运行的日志文件
requirement.txt 存放运行该项目所需要具备的条件
readme.txt 存放对该项目的一些功能介绍等等
PS:实际项目开发中并不一定需要完完全全按照这个框架来设置文件目录,比如当bin文件夹里只有一个start.py文件时,完全可以把start文件拿出来直接放在项目的根目录下。总之只要能大致按照这个框架最终达到软件开发目录规范的目的即可。
5.常见内置模块
5.1.collections:
1.具名元组 namedtuple
导入:from collections import namedtuple
功能:point = namedtuple("三维坐标", "x y z")
res = point(1, 2, 3)
print(res) # 三维坐标(x=1, y=2, z=3) 作用就是将数据值赋值给元祖里面的x,y,z并组成一个元组,同时还为这个元组绑定了一个名字
2.双端队列deque(只做了解)
from collections import deque
作用:队列前可以用appendleft(x)来追加数据,队列后可用.append(x)来追加数据,不同于列表,只能使用.append(x)在后面追加新数据
3.Counter(计数)
from collections import counter
str = "hhhdbfhhffvbvhbfnfjuenvbfih"
res = Counter(str)
print(res) # Counter({"h": 7, "f": 6, "b": 4, "v": 3, "n": 2, "d": 1, "j": 1, "u": 1, "e": 1, "i": 1}) Counter会统计字符串中每一个字符出现的次数,并生成一个字典
5.2.time(时间模块):
import time
time.time() 获取时间戳(从1970年到现在多少秒) # 1657789438.0584188
time.sleep(3) 定时,延时,总之让程序停止3秒钟
time.gmtime() 获取结构化时间(计算机更易读懂) # time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=9, tm_min=3, tm_sec=58, tm_wday=3, tm_yday=195, tm_isdst=0)
time.strftime(format) 获取格式化时间(更方便人查看) # 2022-07-14 17:12:40
PS:格式化时间的获取方式
res = time.strftime("%Y-%m-%d %H:%M:%S") # 需要给定一个时间格式
res2 = time.strftime("%Y-%m-%d %X") # %X = %H:%M:%S
print(res) # 2022-07-14 17:16:16
print(res2) # 2022-07-14 17:17:09
time.strptime(string, format) # 将给定的格式化时间string,按照给定格式format转换为结构化时间
eg:res = time.strptime("2022-07-14", "%Y-%m-%d")
print(res) # time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=195, tm_isdst=-1)
6.作业(将员工管理系统用模块化编程,结合软件开发目录规范来封装)
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Python基础day23:绝对导入和相对导入、模块化编程简介、软件开发目录规范、常见内置模块collections和time
自学咖网 » Python基础day23:绝对导入和相对导入、模块化编程简介、软件开发目录规范、常见内置模块collections和time