Python - 可以导入一个在函数内声明为“全局”的变量吗?

时间:2017-07-21 22:13:50

标签: python import global-variables global pep8

非常着名(并在PEP8中记录)import语句应放在Python模块的顶部,这是我通常所做的。但是,在我目前的情况下,我需要导入一个模块(称为module_a),该模块在另一个模块(称为module_b)运行时创建,因此它不会有{import module_a 1}}位于module_b的顶部(在导入之前需要创建module_a)。

在声明import module_a之后,我实现解决此问题的解决方案是在函数内global module_a。据我所知,这是我想要的。

# In module_b
def create_module_a():
    # Creates module_a.py

def import_module_a():
    global module_a
    import module_a

第1部分我的问题是:有没有办法做我想做的事情,在函数中有import ?有没有办法坚持PEP8?到目前为止,我想到的一个潜在解决方案是在module_c运行之前创建另一个模块module_a,创建module_b并导入module_a ......但是我我甚至不确定这在我的情况下是否会起作用,并且最有可能使事情复杂化,至少在短期内是这样。

我的问题的

第2部分Python documentation中的此声明有关:

  

全局语句中列出的名称不能定义为形式参数或for循环控制目标,类定义,函数定义或import语句。

此声明的最后一部分是否意味着不能导入global名称,或者它是否意味着不能执行import some_module as module_a之类的内容,其中module_a被声明{ {1}}?

如果前者是真的,那么global中有import_module_a()的替代方法是什么?

0 个答案:

没有答案