init.py的作用
init.py该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部import的时候,就会自动执行里面的函数。
如果用pycharm工具创建python package时,这个文件就会自动创建,但是是空白的。
拓展用法
因为如果有外部import的时候,就会自动执行里面的函数,这个时候,就可以把包的引入加入其中,从而简化整个系统的代码。
假设Flask项目中的Blueprint在项目的application\view\admin\ 包下面:
那么,在admin包下面的__init__.py文件中的代码,可以写成这样:
from flask import Flask
from applications.view.admin.admin_log import admin_log
from applications.view.admin.dict import admin_dict
from applications.view.admin.index import admin_bp
def register_admin_views(app: Flask):
app.register_blueprint(admin_bp)
app.register_blueprint(admin_user)
app.register_blueprint(admin_file)
篇幅需要,省略了部分代码。
其中关键点就是这个文件中,定义了一个函数:register_admin_views,它把所有的blueprint都注册了。
在view下面的__init.py__的文件内容就可以是这样的:
from applications.view.admin import register_admin_views
def init_view(app):
register_admin_views(app)
关键点是这个里面定义了一个函数,统一初始化了所有的view
同理:application包下面的__init__.py文件,是类似这样的:
import os
from flask import Flask
from applications.view import init_view
def create_app(config_name=None):
app = Flask(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
# 注册路由
init_view(app)
return app
关键点是在这里创建app并返回。
同理在最外面的app.py里面,就可以这样调用了:
from applications import create_app
app = create_app()
if __name__ == '__main__':
app.run()
所有的初始化都是在__init__.py文件中完成。