栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

模块的绝对相对导入、包的概念、开发目录规范、常见内置模块知识大集合

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

模块的绝对相对导入、包的概念、开发目录规范、常见内置模块知识大集合

模块的绝对导入与相对导入

因为执行文件默认只能找到导入同级的模块文件,所以当导入的模块不在同级时需要用到绝对导入或相对导入。

1.绝对导入        
from 文件夹名 import 模块文件名

'''eg:如果要调用与执行文件同级的aa文件夹下的bb文件夹中的c模块'''
from aa.bb import c

导入模块时sys.path永远以执行文件为起点一层一层的往下找

如果不是用pycharm运行,那么则需要将项目跟目录添加到sys.path(os模块获取项目根目录的绝对)

不足:导入同级下的模块需要写完整的导入路径,如果层级很深,这个路径要写的很长。

2.相对导入

        .  : 在路径中表示当前路径

        .. : 在路径中表示上一层的路径

        ../.. : 在路径中表示上上一层路径

from .. import m1
from ../.. import m2

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

不足:相对导入只能在模块文件中使用不能在执行文件中使用

           当项目目录比较复杂的情况下很有可能会出错(因此推荐使用绝对导入)

包的概念
1.什么是包

        包就是内部有__init__.py文件夹的文件夹,该文件夹可包含多个模块文件,也可以理解为管理多个模块文件的文件。

2.包有什么用

        包的作用是包含多个模块,例如我们用pip下载第三方模块numpy时,目录下会产生一个numpy文件夹,它就是前面安装的 numpy 模块(其实是一个包),里面包含了numpy管理的多个模块。

3.使用举例
'''定义一个包。先新建一个m1文件夹,然后在该文件夹中添加一个__init__.py 文件
py文件内定义a = "hello" '''

import m1
print(m1.a)

ps:导入包名其实就是导入里面的__init__.py文件,文件里面有哪些可以用的你才能用

        也可以用 from 包名 import 模块名 直接导入包里面的模块文件

小知识:在python3解释器中 包文件夹内有没有__init__.py文件已经无所谓了,但在python2解释器中文件夹内必须用___init__.py文件才能当做包不然就是一个文件。

编程思想的转变
目前经历的三个阶段:

        1.小白阶段

                一懂不懂只会像面条一样从上往下的逻辑写代码        单文件

        2.函数阶段

                有了一点编写思维会把功能都提前封装成函数进行来回的调用了        单文件

        3.模块阶段

                逐渐老成已经会利用别人的东西开始简洁代码,同时也可以自己写不同功能的模块供自己用        多文件

软件开发目录规范
为什么要复杂的去规范文件目录:

        为了提高程序的可读性与可维护性,当我们把项目文件进行分类后大大的提高了后期的维护和查看,只需到对应的文件夹名称下找到对应的文件进行查看和修改即可,如果是一堆乱七八糟的文件估计时间一长连开发人员也不知道具体代码在哪个文件内了。

1.bin文件夹

        用来存放项目的启动文件        一般取名为:start.py

2.conf文件夹

        用来存放项目的一些配置文件 一般取名为:settings.py

3.core文件夹

        用来存放项目的核心逻辑(实现功能的代码)   一般取名为:src.py

4.lib文件夹

        用来存放项目的公共功能        一般取名为:common.py

5.db文件夹

        用来存储项目的数据文件(数据库) 一般取名为:userinfo.py

6.log文件夹

        用来存放项目的日志文件        一般取名为:log.log

7.interface文件夹

        用来存放项目的借口文件        一般取名为:user.py order.py goods.py

8.readme文件夹

        用来存放项目的说明、介绍、广告 类似于说明书

9.requirements.txt文件

        用来存储项目所需的第三方模块名称和版本

ps:我们在编写的时候不需要硬性规定的按照上面的形式取名字,只要做到分类清晰就可以名字可以取别的

常见内置模块
1.collections模块

        # 创建一个和tuple类似的对象 # from collections import namedtuple

from collections import namedtuple
Point = namedtuple('二维坐标系', ['x', 'y'])
res1 = Point(1, 3)
res2 = Point(10, 49)
print(res1, res2)
print(res1.x)
print(res1.y)

'''打印结果
二维坐标系(x=1, y=3) 二维坐标系(x=10, y=49)
1
3
'''
        # 双端队列 # from collections import deque
from collections import deque
a1 = deque()
a1.append(1)
a1.append(2)
a1.appendleft(888)
print(a1)
'''打印结果
deque([888, 1, 2])
'''
        # 有序字典 # from collections import OrderedDict
from collections import OrderedDict
d = dict([('a', 1), ('b', 2), ('c', 3)])
print(d)
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od)
'''打印结果
{'a': 1, 'b': 2, 'c': 3}
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
'''
        # 完成计数 # from collections import Counter
res = 'acbcbabbcacabcbb'
from collections import Counter
res1 = Counter(res)
print(res1)
'''打印结果
Counter({'b': 7, 'c': 5, 'a': 4})
'''
2.时间模块之time模块
常见时间日期格式化符号
符号属性
%y表示年份(00-99)
%m表示月份(1-12)
%d表示一个月中的天数(1-31)
%H表示24小时制的时数(0-24)
%I表示12小时制的时数(1-12)
%M表示分钟(0-59)

%S

表示秒数(0-59)
%j表示一年内的第几天(1-366)
%w表示星期几
%x当地相应的日期表示
%X当地相应的时间表示
表示时间的三种格式:

(1).时间戳:time.time()

        时间戳都表示从1970年1月1日0时到现在经过了多长时间

import time  
now = time.time()
print("当前时间戳为:", now)

'''打印结果
当前时间戳为: 1657798735.424146

'''

(2).结构化时间:time.gmtime()

        将一个时间戳转换为UTC时区

import time
print(time.gmtime())

'''打印结果
time.struct_time(tm_year=2022, tm_mon=7, tm_mday=14, tm_hour=11, tm_min=45, tm_sec=7, tm_wday=3, tm_yday=195, tm_isdst=0)
'''
符号属性
tm_year表示年份
tm_mon表示月份
tm_mday表示天数
tm_hour表示小时
tm_min表示分钟
tm_sec表示秒钟
tm_wday表示一周的第几天

(3).格式化时间:time.strftime()

        用于格式化时间,返回以可读字符串表示的当地时间

import time
now_date = time.strftime("%Y-%m-%d")
print(now_date)

new_time = time.strftime("%H:%M:%S")
print(new_time)

'''打印结果
2022-07-14
19:51:43
'''

暑期编程PK赛 得CSDN机械键盘等精美礼品!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015226.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号