ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python软件开发目录与规范

2022-07-14 22:07:16  阅读:246  来源: 互联网

标签:软件开发 python 导入 tm 模块 time print import 目录


绝对导入与相对导入

查找路径只按照执行文件所在的sys.path

- 绝对导入
# 就是按照执行文件所在的sys.path为起始路径,一步步往下查找
eg1 :
 from a import func
 #在同一个文件路径下模块可以直接导入
 
eg2 :
 from c.a import func
 #在不同路径下模块导入用点的方式把模块当前路径加到执行文件
***
  在模块文件中,如果涉及到页需要导入模块的情况,就用from句式,这种句式也成为绝对导入
***
 
 
 ps:由于pycharm会自动将项目根目录添加到sys.path中所以查找模块肯定不报错的方法就是永远从根路径往下一层层找	

eg1:
image

eg2:
image
*不同路径下的模块导入会报错

image

- 相对导入
#相对导入的局限性:
1,只能在模块中导入,不能在执行文件中导入
2,在项目比较复杂的情况下可能会出错


相对导入可以不参考执行文件所在的路径 直接以当前模块文件路径为准

image

*推荐使用绝对导入

查找路径补充知识点
1.  . 在路径中是当前路径
2. .. 在路径中是上一层路径
3.  ../..在路径中是上上一层路径

eg:
image

包的概念与作用
1.包的概念:简单来讲就是文件夹 ,从专业的角度来说就是内部含有__init__.py的文件夹.
2.作用主要是方便管理文件,快捷操作。
3.具体操作
  import 包名
  
  **导入包名其实导入的是里面的__init__.py文件(该文件里面有什么你才能用什么) ,   此方法比较鸡肋 !!!!
  可以直接跨过__init__.py导入包里面的文件内容
  

image

软件开发目录规范

1.bin文件夹 :用于存储程序启动文件  
    # eg: start.py
2.conf文件夹 : 用于存储程序的配置文件
  #eg : settings.py
3.core文件夹 : 用于存储程序的核心逻辑
   #eg : scr.py
4.lib文件夹 : 用于存储程序的公共功能(模块等)
  #eg : common.py
5.db文件夹 : 用于存储程序的数据文件  txt文件
6.log文件夹 : 用于存储程序的日志文件
  #eg : log.log
7.interface 文件夹: 用于存储程序的接口文件
8.readme文本文件 :用于编写程序的说明介绍等
9.requirements.txt文件 :用于存储程序所需的第三方模块名称和版本。


*我们在编写软件的时候 可以不完全遵循上面的文件名
	start.py可以放在bin文件夹下也可以直接放在项目根目录

常见内置模块

  • collections模块

给我们提供了更多数据类型

1.namedtuple 具名元组

 用于创建一个自定义的tuple对象,可以使用名字来访问元素内容
 
typename :命名的名字,返回一个新的元组子类,名为 typename
 
field_names : 可以是一个['a','b']的序列,也可以是'a,b'或者'a b'
from collections import namedtuple
res = namedtuple('元组','summer')
res1 = res('今天又是快乐的一天')
print(res1) #元组(summer='今天又是快乐的一天')
print(res1.summer)#今天又是快乐的一天
2.deque 双端队列
deque是为了高效实现插入和删除操作的双向列表,实现了在两端快速添加(append)和弹出(pop),适用于队列和堆栈


from collections import deque
res = deque()
res.append(666)
res.append(888)
res.append(999)
# print(res)  #deque([666, 888, 999])
print(res.pop())
print(res)  #999  deque([666, 888])

OrderedDict有序字典
会按照key的插入顺序排序的字典
from collections import OrderedDict
d = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(d)   #{'a': 1, 'b': 2, 'c': 3}

4.counter 计数器
就是用来计数的 ,它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value
from collections import Counter
c = Counter('abdhdbdda')
print(c)  #Counter({'d': 4, 'a': 2, 'b': 2, 'h': 1})
  • time模块

#表示时间的三种格式,可以相互转换

    	1.时间戳	          time.time() 
	2.结构化时间	  time.gmtime() 计算机看的时间
	3.格式化时间	  time.strftime() 人看的时间
1.time.time
import time
print(time.time())  #1657801323.6643276

#时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.

2.gmtime()
import time
print(time.gmtime()) 
# time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=12, tm_min=27, tm_sec=50, tm_wday=3, tm_yday=195, tm_isdst=0)

3.serftime()
import time
print(time.strftime("%Y-%m-%d %X"))
#2022-07-14 20:44:52

#括号密码的%X也可以写成%H%M%S

4.三种时间格式的转换
import time
# 时间戳转结构化时间
print(time.localtime())   #当地时间
# time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=21, tm_min=13, tm_sec=36, tm_wday=3, tm_yday=195, tm_isdst=0)
print(time.gmtime())
# time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=13, tm_min=15, tm_sec=57, tm_wday=3, tm_yday=195, tm_isdst=0)


#结构化时间转时间戳
import time
time_tuple = time.localtime(1500000000)
print(time.mktime(time_tuple))
  
  ![image](https://www.icode9.com/i/l/?n=22&i=blog/2882235/202207/2882235-20220714211109527-1130614782.png)

标签:软件开发,python,导入,tm,模块,time,print,import,目录
来源: https://www.cnblogs.com/Hsummer/p/16479472.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有