非常着名(并在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()
的替代方法是什么?