首页 / 资讯中心 / 文章详情

init文件介绍

init文件介绍 ★ FEATURED ARTICLE
1.__init__.py什么时候会执行__init__.py的执行时机非常明确当它的父级文件夹被当作一个“包Package”被第一次导入时这个文件里的代码就会自动执行。具体场景当你写from app import create_app或者import app时。触发动作Python 解释器会先进入app/文件夹找到并执行里面的__init__.py文件中的所有代码最后把定义好的变量比如create_app返回给你。一句话理解它是整个包也就是你的核心业务目录app/的“初始化脚本”。2. 放到其他的文件里面可以吗绝对不可以。Python 语言层面__init__.py是 Python 语言规定的特殊文件名。它的名字是固定死的叫作“包初始化文件”。你把它改名叫init.py、start.py或者main.py放在app/文件夹下它就失去了作为“包入口”的魔法功能变成了普通的模块文件。项目架构层面即使你在别的文件比如routes/main.py里也写了类似的函数那也无法触发app/整个包的初始化流程。3. 怎么放到__init__.py这里比较好在 Flask 的企业级项目中把**应用工厂函数create_app放在app/__init__.py是公认的“黄金位置”。这样做有以下几个极佳的理由符合“初始化”的语义app/文件夹是你的项目核心应用包。当这个包被导入时它理应完成自身的初始化创建实例、加载配置、注册插件、注册蓝图。__init__.py完美承载了“初始化”的职责。让启动文件入口保持干净把你的业务逻辑全部封装在 app/包里然后在项目根目录的启动文件通常叫 run.py或 app.py中只需要写极少的代码# run.pyfromappimportcreate_app# 触发 app/__init__.py 执行拿到工厂函数appcreate_app()if__name____main__:app.run(debugTrue)这样项目的入口文件就只有一个作用启动项目。所有的脏活累活初始化、配置、插件绑定都被封装在 app/init.py内部了。方便测试和部署工厂函数create_app()可以接收参数比如create_app(config_classTestConfig)。在单元测试或不同服务器部署时你只需要在测试脚本或部署配置里调用create_app(不同配置)即可极其灵活。总结一般的项目结构应该是这样的项目根目录/ ├── run.py -- 唯一的启动入口代码极少 ├── config.py -- 存放不同的配置类 └── app/ -- 核心业务包 ├── __init__.py -- 【核心】应用工厂函数负责初始化一切 ├── routes/ │ ├── __init__.py │ ├── main.py -- 首页等路由 │ └── user.py -- 用户相关路由 └── templates/ └── index.html照这个标准结构搭下来Flask 项目就具备了企业级的骨架。
阅读完成 · 觉得有帮助?
咨询建站