绝对导入与相对导入
查找路径只按照执行文件所在的sys.path
– 绝对导入
# 就是按照执行文件所在的sys.path为起始路径,一步步往下查找
eg1 :
from a import func
#在同一个文件路径下模块可以直接导入
eg2 :
from c.a import func
#在不同路径下模块导入用点的方式把模块当前路径加到执行文件
***
在模块文件中,如果涉及到页需要导入模块的情况,就用from句式,这种句式也成为绝对导入
***
ps:由于pycharm会自动将项目根目录添加到sys.path中所以查找模块肯定不报错的方法就是永远从根路径往下一层层找
eg1:
eg2:
*不同路径下的模块导入会报错
– 相对导入
#相对导入的局限性:
1,只能在模块中导入,不能在执行文件中导入
2,在项目比较复杂的情况下可能会出错
相对导入可以不参考执行文件所在的路径 直接以当前模块文件路径为准
*推荐使用绝对导入
查找路径补充知识点
1. . 在路径中是当前路径
2. .. 在路径中是上一层路径
3. ../..在路径中是上上一层路径
eg:
包
包的概念与作用
1.包的概念:简单来讲就是文件夹 ,从专业的角度来说就是内部含有__init__.py的文件夹.
2.作用主要是方便管理文件,快捷操作。
3.具体操作
import 包名
**导入包名其实导入的是里面的__init__.py文件(该文件里面有什么你才能用什么) , 此方法比较鸡肋 !!!!
可以直接跨过__init__.py导入包里面的文件内容
软件开发目录规范
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)
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/274415.html