Python:在模块中编写函数以导入包

Posted

技术标签:

【中文标题】Python:在模块中编写函数以导入包【英文标题】:Python: Write function in module to import packages 【发布时间】:2015-04-23 09:45:35 【问题描述】:

我正在尝试编写一个本身已加载的函数,以快速全局导入一堆模块。

我认为,本质上,加载的模块可以被视为变量,所以我尝试了:

def loadMods():
    global np
    import numpy as np

当我加载 numpy(调用 np)时没有问题。

然后我所做的是创建一个名为 loadTest 的单独 .py 文件,其中包含

# loadTest module
# coding: utf-8

def loadMod():
     global np
     import numpy as np

然后尝试在 python (2.7) 中使用这个 .py 文件导入 numpy:

import loadTest
loadTest.loadMod()

但现在当我尝试调用 np 时,我得到了

File "<stdin>", line 1, in <module>
NameError: name 'np' is not defined

为什么会发生这种情况?任何帮助或替代方法将不胜感激。非常感谢:)

【问题讨论】:

您所做的只是使np 在您的loadTest 模块中可用,这根本没有帮助。 这正是我所期待的。感谢您的澄清:) 【参考方案1】:

与其做一个函数来做这个,为什么不做另一个模块呢?您可以将其命名为 modules.py 并将所有导入内容放在那里:

import numpy as np
import os
import sys
...

那么,您只需发送wildcard import:

from modules import *

一切都将可用。

【讨论】:

【参考方案2】:

你必须先这样定义np

loadTest:

np=None

在别的地方

import loadTest
loadTest.loadMod()
np=loadTest.np

【讨论】:

这行不通。每个模块的全局命名空间都是独立的,因此loadMod 中的global 语句只会在其自己的模块中写入np 名称。

以上是关于Python:在模块中编写函数以导入包的主要内容,如果未能解决你的问题,请参考以下文章

常用模块

python中的模块,以及包的导入的总结

Python基础

python11_模块与包

9-高级语法-包

详解Python模块化——模块(Modules)和包(Packages)