zoukankan      html  css  js  c++  java
  • 为什么只调用了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的工厂函数

  • 相关阅读:
    Java 中常用缓存Cache机制的实现
    Spring普通类获取bean
    系统升级shell
    shell 操作文本内容(修改增加)
    接口实践;接口与抽象类
    Java中@Override的作用
    类实现多个接口的例子
    java 反射实践
    对象主要属性及识别
    java抽象类实践
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11786067.html
Copyright © 2011-2022 走看看