查找路径只按照执行文件所在的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文件夹下也可以直接放在项目根目录
给我们提供了更多数据类型
用于创建一个自定义的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)#今天又是快乐的一天
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])
会按照key的插入顺序排序的字典 from collections import OrderedDict d = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) print(d) #{'a': 1, 'b': 2, 'c': 3}
就是用来计数的 ,它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value from collections import Counter c = Counter('abdhdbdda') print(c) #Counter({'d': 4, 'a': 2, 'b': 2, 'h': 1})
#表示时间的三种格式,可以相互转换 1.时间戳 time.time() 2.结构化时间 time.gmtime() 计算机看的时间 3.格式化时间 time.strftime() 人看的时间
import time print(time.time()) #1657801323.6643276 #时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.
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)
import time print(time.strftime("%Y-%m-%d %X")) #2022-07-14 20:44:52 #括号密码的%X也可以写成%H%M%S
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.www.weizhi.cc/i/l/?n=22&i=blog/2882235/202207/2882235-20220714211109527-1130614782.png)