当前位置: 首页 > news >正文

1.1.5 模块与包——AI教你学Django

1.1.5 模块与包(Django 基础学习细节)

模块和包是 Python 项目组织和代码复用的基础。Django 项目本质上就是由多个模块和包组成。理解和灵活运用模块与包机制,是写好大型项目的关键。

一、import、from-import、as 的用法

1. import

  • 用于导入整个模块,模块名为文件名(不带 .py)。
  • 用法:
    import math
    print(math.sqrt(16))  # 4.0
    

2. from … import …

  • 用于从模块或包中导入指定成员(变量、函数、类等)。
  • 用法:
    from math import sqrt, pi
    print(sqrt(9))  # 3.0
    print(pi)       # 3.141592653589793
    

3. as

  • 用于给模块或成员起别名,简化书写或防止命名冲突。
  • 用法:
    import numpy as np
    from datetime import datetime as dt
    print(np.array([1, 2, 3]))
    now = dt.now()
    

4. 多层包导入

  • 支持多级包结构:
    from myproject.utils.tools import my_func
    

二、name == “main

1. 含义

  • 每个 Python 文件都作为一个模块,模块有一个 __name__ 属性。
  • 如果模块被直接运行,__name__ == "__main__";如果被导入,__name__ 等于模块名。

2. 作用

  • 只在脚本直接运行时执行某段代码,导入时不执行。
  • 常用于编写测试代码、命令行入口。

3. 示例

# foo.py
def say_hi():print("Hi!")if __name__ == "__main__":say_hi()    # 直接运行 foo.py 时会执行
# bar.py
import foo  # 导入 foo.py,不会执行 if __name__ == "__main__" 下的内容

三、sys.path

1. sys.path 的作用

  • 是一个列表,包含所有 Python 查找模块的目录。
  • 可动态添加搜索路径,方便跨目录导入。

2. 示例

import sys
print(sys.path)
sys.path.append("/path/to/my/modules")
# 现在可以 import 该目录下的模块

3. 应用场景

  • 复杂项目/部署时临时添加自定义模块路径
  • 避免命名冲突和导入错误

四、包的初始化(init.py)

1. 包的概念

  • 包是包含多个模块的文件夹,必须包含一个 __init__.py 文件(可为空)。
  • __init__.py 的存在使 Python 将该目录识别为包。

2. init.py 的作用

  • 初始化包(如导入常用模块、定义包级变量/函数等)
  • 控制子模块的导出(通过 all
  • 可以写包级别的初始化逻辑

3. 示例结构

myproject/
├── __init__.py
├── foo.py
├── bar.py
# myproject/__init__.py
from .foo import say_hi
from .bar import some_func
  • 导入包时自动执行 __init__.py 代码:
import myproject
myproject.say_hi()

4. all 控制包成员

# __init__.py
__all__ = ["foo", "bar"]
  • from myproject import * 时只导入 foo, bar

五、模块与包在 Django 项目中的应用

  • 项目根目录即包(包含 manage.py、settings.py、urls.py 等模块)
  • 每个 app 是独立包(含 models.py、views.py、admin.py、apps.py 等模块)
  • 通常会在 __init__.py 中做初始化或暴露接口

六、实用小结

  • 用 import/from-import/as 灵活组织和复用代码
  • __name__ == "__main__" 编写可测试或可复用模块
  • sys.path 控制模块搜索路径,解决复杂项目的导入问题
  • __init__.py 是包的标识和初始化位置,建议始终保留即使为空
http://www.xdnf.cn/news/1118737.html

相关文章:

  • 大模型微调(一):基于Swift框架进行自我认知微调(使用Lora微调Qwen3-8B模型)
  • 系规备考论文:论IT服务部署实施方法
  • 17.使用DenseNet网络进行Fashion-Mnist分类
  • 【数据结构】图 ,拓扑排序 未完
  • INA226 数据手册解读
  • HTTP与HTTPS详解
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十二课——图像增强的FPGA实现
  • opencv4.12 vs2022 cmake contrib编译
  • 基于MATLAB的Lasso回归的数据回归预测方法应用
  • 零基础完全理解视觉语言模型(VLM):从理论到代码实践
  • 【Mysql作业】
  • 从零开始学习深度学习—水果分类之PyQt5App
  • C++高频知识点(十三)
  • 掌握系统设计的精髓:12个核心设计模式的通俗解读
  • sql:sql在office中的应用有哪些?
  • 谷歌在软件工程领域应用AI的进展与未来展望
  • 数智管理学(三十三)
  • AI生成单词消消乐游戏. HTML代码
  • Opencv---blobFromImage
  • NO.4数据结构数组和矩阵|一维数组|二维数组|对称矩阵|三角矩阵|三对角矩阵|稀疏矩阵
  • 在conda的环境中安装Jupyter及其他软件包
  • SpringBoot单元测试类拿不到bean报空指针异常
  • python函数快捷的传变量地址
  • C++--红黑树封装实现set和map
  • 极矢量与轴矢量
  • Linux系统移植19:根文件系统的构建
  • leetGPU解题笔记(2)
  • C# 接口(接口可以继承接口)
  • 华为OD 处理器
  • 改进后的 OpenCV 5.x + GStreamer + Python 3.12 编译流程(适用于 Orange Pi / ARM64)