模块和包

xiaoxiao2025-11-26  4

在计算机程序开发过程中,随着程序代码越来越多,在一个文件里的代码越来越多,越来越不容易维护

为了编写可以维护的代码,我们把很多模块分组,分别放在不同的文件里,这样每个文件里面包含的代码就相对的少

在Python中,每个.py就是一个模块(module)

优点

提高了代码的可维护性每个模块都是可重用的避免函数名和变量名冲突

模块分为三类

内置模块第三方模块自定义模块

导入模块

#导入xxx模块 import xxx #从xxx导入xx from xxx import xx #起别名x from xxx import xx as x #将xxx模块全部导入,调用时不需要xxx.了(不推荐使用) from xxx import *

安装第三方模块

pip install xxx

卸载第三方模块

pip uninstall xxx

默认会使用python官方服务器下载,速度比较慢,可以改用国内的源

(从豆瓣安装并将该网址信任)

pip install -i http://pypi.douban.com/simple xxx --trusted-host pypi.douban.com

 

 

当你的模块越来越多,就需要对模块进行划分,根据不同的功能分为多个目录,一个目录管理多个模块文件,这个目录称为包

包里面应该有一个__init__.py文件,用于告诉python解析器这是一个包,

示例

#文件路径 imports ---text ---__init__.py ---text1.py ---proj ---__init__.py ---proj1.py ---模块.py

 

在模块.py中导入text1.py文件

from text import text1

在text1.py中导入proj.py文件

import sys print(sys.path). #打印python的环境变量,第一个''是当前目录 sys.path.append('/Users/sunlizhao/PycharmProjects/imports') #将目录路径写入到环境变量中(当前文件有效) print(sys.path)

现在就可以在text1.py中导入proj.py文件了

from proj import proj1.py

但是这样就把路径给写死,如果项目更换平台就会报错

获取当前文件路径

print(__file__) #/Users/sunlizhao/PycharmProjects/imports/text/text1.py

但是我们只想获取到imports目录这一层

import sys,os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) print(BASE_DIR) #/Users/sunlizhao/PycharmProjects/imports

发现这样就向上了两层目录

然后将目录添加到环境变量

sys.path.append(BASE_DIR) print(sys.path)

这样在pycharm中成功了,但是在终端中很可能会失败,找了一下原因__file__还不是绝对路径

import sys,os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) from proj import proj1

 

 

相对路径(路径关系比较严格,不常用)

相对路径往上翻不能到程序的目录,在这个例子中,就是不能到imports目录

这样就需要重新更改一下目录结构

imports ---tete ---text ---__init__.py ---text1.py ---proj ---__init__.py ---proj1.py ---模块.py

在text1.py中导入proj1.py文件

from ..proj import proj1

 

转载请注明原文地址: https://www.6miu.com/read-5040029.html

最新回复(0)