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

python基础(二) 包和import

包的创建

文件创建命令

在 Django 中,python manage.py startapp first_app 这一行命令的作用是创建一个新的应用(app),名为 first_app。在 Django 项目中,"app" 是实现某些功能模块的单独部分,项目可以包含多个 app,每个 app 都专注于特定功能,例如用户管理、博客、评论等。

文件作用

当你运行 startapp 命令时,Django 会在项目目录下生成一个新的文件夹,其中包含一些基础文件,每个文件有特定的用途:

  • __init__.py: 表示这是一个 Python 包,可以为空。
  • admin.py: 用于注册 models,以便通过 Django 的管理界面管理模型数据。
  • apps.py: 配置 app 的相关设置。
  • models.py: 用于定义数据库模型,描述数据的结构。
  • tests.py: 编写自动化测试的地方,确保 app 功能按预期工作。
  • views.py: 处理 HTTP 请求并返回响应的逻辑放置在这里。
  • migrations: 包含数据库迁移文件,记录数据模型的变更并同步到数据库。

from和import作用

from ... import ... 语句允许你从指定的模块或包中导入特定的对象(函数、类、变量等),并直接使用它们,无需前缀。

当前包中的导入

如果你在同一个包中导入某个模块中的函数,可以直接用类似以下的方式:

from .file1 import func_in_file1

这里 .file1 表示当前包下的 file1 文件,func_in_file1 是其中的函数名。from .file1 中的 . 代表当前包。

不同包下的导入

当你需要从另一个包中导入模块或函数时,需要指定完整的路径,类似于下面的方式:

from other_package.file1 import func_in_file1

这里 other_package 是另一个包,file1 是文件名,func_in_file1 是文件中的方法。

from .from ..区别

1. from .module import something(单点 .

  • 含义:单点 . 表示当前目录,也就是当前包。
my_package/├── __init__.py├── file1.py  # 包含 func_in_file1 函数└── file2.py  # 需要调用 func_in_file1

file2.py 中,如果你想导入 file1.py 中的 func_in_file1 函数,可以这样写:

# file2.py
from .file1 import func_in_file1

这里的 . 表示当前的 my_package 包。

2. from ..module import something(双点 ..

  • 含义:双点 .. 表示上一级目录(即父包)。
  • 作用:从当前模块所在目录的上一级包中导入模块或方法。
  • 场景:当你在一个子包中,想要导入父包中的模块或函数时,使用 ..
project/├── my_package/│   ├── __init__.py│   ├── file1.py│   ├── first_app/│   │   ├── __init__.py│   │   └── views.py│   └── file2.py

file2.py 中,如果你想导入 first_app/views.py 中的内容,可以使用以下语法:

# file2.py
from ..first_app import views

这里的 .. 表示当前的 my_package 的上一级目录(即 project 目录),从而跳转到 first_app 模块。

3. 总结区别:

  • . (单点):指向当前目录,即当前包,可以用于导入同一个包内的其他模块。
  • .. (双点):指向上一级目录,可以用于从子包中导入父包或同级包的内容。
http://www.lryc.cn/news/444064.html

相关文章:

  • 选址模型 | 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab)
  • WPF入门教学十 资源与字典
  • Ubuntu20.04配置NVIDIA+CUDA12.2+CUDNN【附所有下载资源】【亲测有效】【非常详细】
  • Golang | Leetcode Golang题解之第424题替换后的最长重复字符
  • 软考高级:系统安全 -区块链特点:去中心化、开放性、自治性、安全性、匿名性
  • Pandas 数据分析入门详解
  • 【网络】高级IO——epoll版本TCP服务器初阶
  • xml中的转义字符
  • Webpack:现代前端项目的强大打包工具
  • 以root用户登陆ubuntu的桌面环境
  • 《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-04-其他网络架构(存储网络架构、软件定义网络架构)
  • 大话Python|基础语法(上)
  • crosscrossover24支持的游戏有那些
  • 如何免费调用GPT API进行自然语言处理
  • vue无感刷新Token并重新请求
  • C++和OpenGL实现3D游戏编程【连载10】——纹理的半透明显示
  • 50页PPT麦肯锡精益运营转型五步法
  • Fyne ( go跨平台GUI )中文文档-小部件 (五)
  • GUI编程19:贪吃蛇小游戏及GUI总结
  • linux StarRocks 安装
  • 解决RabbitMQ设置x-max-length队列最大长度后不进入死信队列
  • 【解决】chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标
  • 使用python操作数据库
  • [Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis
  • 排序----数据结构
  • Crack道路裂缝检测数据集——目标检测数据集
  • 10.3拉普拉斯金字塔
  • redis为什么不使用一致性hash
  • Vue.js与Flask/Django后端配合
  • ESP32 入门笔记02: ESP32-C3 系列( 芯片ESP32-C3FN4) (ESP-IDF + VSCode)