软件开发目规范与模块

绝对导入与相对导入

  • 绝对导入
from 路径起点下一层的文件名.在下一层的文件名 import 指定变量名
"""
绝对导入就是以执行文件所在的sys.path为路径起点,按绝对路径查找需要的文件,pycharm会自动将项目根目录添加到sys.path中,所以查找时会从根目录一层一层往下查找
"""
  • 相对导入
from .. import 文件名
"""
.在路径中是当前路径的意思
..在路径中是上一层路径的意思
../..在路径中是上上一层的意思
相对导入可以不参考执行文件所在路径,按模块文件本身路径来查找需要的文件,通过..一层一层向上查找
相对导入只能在模块文件中使用,不能在执行文件中使用
"""

包的概念

1.什么是包
内部含有__init__.py文件的文件夹就是包,看起来就是文件夹
python3.x解释器有没有__init__.py文件其实都可以,但python2.x解释器必须有__init__.py文件
2.包有什么用
用来储存多个模块文件,方便我们管理多个模块文件
3.包的使用
import 包名
导入包名时其实导入的是__init__.py文件,如果想导入其他文件,用绝对导入的方法即可

image

软件开发目规范

"""
编写程序时,可以不完全遵守这些文件名,将文件放到其他文件夹也是可以的
"""
目录名				文件名			      文件功能
bin文件夹		 	start.py		   储存启动程序的文件
conf文件夹			settings.py	      储存配置程序的文件
core文件夹			src.py			  储存核心逻辑程序的文件
lib文件夹			common.py		  储存程序公共功能的文件
db文件夹			userinfo.txt	   储存程序数据的文件
log文件夹			log.log			  储存日志记录的文件
interface文件夹	 user.py		   储存程序接口的文件
readem文件		 readem.txt		    储存程序的说明书,介绍
requirements文件	 requirements.txt    储存程序需要的第三方模块名称和版本

内置模块

  • collections模块可以让我们使用多种数据类型

  • namedtuple(具名元组)

from collections import namedtuple
func = namedtuple('三维坐标', ['x', 'y', 'z'])
res = func(10, 20, 30)
info = func(40, 50, 60)
print(res)  # rum:三维坐标(x=10, y=20, z=30)
print(info)  # rum:三维坐标(x=40, y=50, z=60)
print(res.x)  # rum:10
print(info.x)  # rum:40
  • deque( 双端队列)
from collections import deque
q1 = deque()
q1.append(11)
q1.append(22)
q1.append(33)
q1.appendleft(0)
print(q1)  # run:deque([0, 11, 22, 33])
  • OrderedDict(有序字典)
from collections import OrderedDict
data = dict([('barry', 18), ('batman', 20), ('superman', 22)])
print(data)  # run:{'barry': 18, 'batman': 20, 'superman': 22}
od_data = OrderedDict([('barry', 18), ('batman', 20), ('superman', 22)])
print(od_data)  # run:OrderedDict([('barry', 18), ('batman', 20), ('superman', 22)])
  • defaultdict(默认值字典)
from collections import defaultdict
res = defaultdict(k1=[], k2=[])
print(res)  # run:defaultdict(None, {'k1': [], 'k2': []})
  • Counter(计数器)
res = 'cabdcabcbabcadb'
from collections import Counter
func = Counter(res)
print(func)  # run:Counter({'b': 5, 'c': 4, 'a': 4, 'd': 2})

时间time模块

  • 三种time格式
时间模块的三种格式
1.时间戳
返回从1970年1月1日12时00分到运行时所经历的时间
import time
print(time.time())  # run:1657797061.2495456
2.结构化时间
返回从1970年1月1日12时00分经过time.gmtime()所指定之描述的时间
import time
print(time.gmtime(10))
# run:time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=10, tm_wday=3, tm_yday=1, tm_isdst=0)
3.格式化时间
我们所理解的时间
import time
print(time.strftime('%Y-%m-%d %H:%M:%S'))
# run:2022-07-14 19:24:39

image

  • 三种格式的转换
import time

print(time.time())  # run:1657797061.2495456

print(time.gmtime(1657797061))  # 将时间戳转为结构化时间
# run:time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=11, tm_min=11, tm_sec=1, tm_wday=3, tm_yday=195, tm_isdst=0)

print(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1657797061)))  # 将结构化时间转为格式化时间
# run:2022-07-14 11:11:01

print(time.strptime('2022-07-14 11:11:01', '%Y-%m-%d %H:%M:%S'))  # 将格式化时间转为结构化时间
# run:time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=11, tm_min=11, tm_sec=1, tm_wday=3, tm_yday=195, tm_isdst=-1)

res = time.gmtime(1657797061)
print(time.mktime(res))  # 将结构化时间转为时间戳
# run:1657768261.0

image

posted @ 2022-07-14 20:11  无言以对啊  阅读(49)  评论(0)    收藏  举报