为什么只调用了1次函数,但是该函数却被执行了2次呢?

 

【目录结构】

  gotest(包名)

   -- __init__.py

【问题代码】

__init__.py

from flask import Flask
from gotest.settings import config,get_app_config

def create_app(config_name=None):

    if config_name is None:
        config_name=get_app_config('FLASK_CONFIG')
    app = Flask('app')

    cfobj=config[config_name]
    print(cfobj)#为什么会输出2次结果呢?
    app.config.from_object(cfobj)

    return app

app=create_app()

【运行结果】

<class 'app.settings.ProductingConfig'>
<class 'app.settings.ProductingConfig'>

 

【问题分析】

  检查了一下自己的目录结构才发现问题:

  单独运行的文件是gotest包下的__init__文件

  我在第2行代码有从gotest.settings导入依赖程序的操作

  当程序运行到gotest.settings时,会首先运行gotest包下的__init__文件,就会执行到app=create_app()代码行

  而我又执行了单独运行__init__,这样app=create_app()就相当于被运行了2次了

【解决办法】

不要在__init__文件中创建Flask对象app,而是直接另建1个文件app用来运行生成app的工厂函数

 

 

posted @ 2019-11-03 14:22  wangju003  阅读(969)  评论(0)    收藏  举报