8、Python之包

8.3 函数知识点(补充)

函数的类型提示

Python并不强制规定程序员的操作

def fun(name:str,age:int,hobbies:tuple)->int:
    print(name)
    print(age)
    print(hobbies)
fun('hello',12,('play','music'))


def fun(name:str='hello',age:int=12,hobbies:tuple=('play','music'))->int:

fun()


8.4 包

什么是包?

包就是模块。

包就是一个含有__ init __.py文件的文件夹,文件夹内可以组织子模块或子包 。

为什么要使用包?

随着模块数目的增多,把所有模块不加区分地放到一起也是极不合理的,于是Python为提供了一种把模块组织到一起的方法,即创建一个包 。

import mmm # mmm为一个含有__init__.py文件的文件夹
print(mmm.x)
print(mmm.y)

如何使用包?

1、绝对导入,以包的文件夹作为起始来进行导入

from mmm.m1 import x
print(x)
from mmm.m2 import x
print(x)

2、相对导入

.:代表当前文件夹

..:代表上一层文件夹,如果还在上一层就在加一个点

仅局限于在包内使用

包内的模块导入推荐使用相对导入

绝对导入是没有任何限制的,所以,绝对导入是一种通用的导入方式

1、关于包相关的导入语句也分为import和from ... import ...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则
凡是在导入时带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如import 顶级包.子包.子模块,但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。

2、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

3、import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,
即包下的__init__.py,导入包本质就是在导入该文件

8.5 软件开发的目录规范

• core/: 存放业务逻辑相关代码

• api/: 存放接口文件,接口主要用于为业务逻辑提供数据操作。

• db/: 存放操作数据库相关文件,主要用于与数据库交互

• lib/: 存放程序中常用的自定义模块

• conf/: 存放配置文件

• run.py: 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤

• setup.py: 安装、部署、打包的脚本。

• requirements.txt: 存放软件依赖的外部Python包列表。

• README: 项目说明文件。

从一个文件引入另外一个文件,就需要使用sys.path.append('绝对路径'),然后再引入。

# 优化目录
import os
import sys
# print(__file__) # 当前文件的绝对路径
BASE_DIR=os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)
from core import src
src.run()
posted on 2022-07-08 21:38  AprilX  阅读(77)  评论(0)    收藏  举报