如何将所有已定义的函数从python脚本1导入到python脚本2中?

时间:2017-10-29 04:58:58

标签: python function import python-import importerror

我正在尝试将包含多个已定义函数的python脚本导入到不同的python脚本using this approach via SO中。由于我想导入的脚本定义了许多函数(其中一些嵌套在其他函数中),我宁愿导入整个脚本而不是单独导入每个函数。我在下面使用一个更简单的例子。

假设我的desktop上有一个名为'workspace'的文件夹。在文件夹'workspace'中,有一个名为'pre.py'的脚本,其中包含单个函数(在下面定义)和一个名为'__init__.py'的空白文件。

def get_g(x):
    """ Sample Function """
    if isinstance(x, list):
        res = [xi**2 for xi in x]
    else:
        res = x**2
    return res

在同一个'workspace'文件夹中,有一个名为'post.py'的脚本,我想在其中导入'pre.py'中定义的所有函数。下面是'post.py'的示例脚本。

ATTEMPT#1:

import matplotlib.pyplot as plt

def get_my_imports(script_name, fileloc="/Users/myname/Desktop/workspace"):
    """ Import Sample Function (defined above) """
    from fileloc import script_name

get_my_imports('pre.py')

x = np.linspace(1, 10, 100)
y = get_g(x)

plt.plot(x, y)
plt.show()

>> ImportError: No module named 'fileloc'

ATTEMPT#2:

import matplotlib.pyplot as plt
from "/Users/myname/Desktop/workspace" import 'tst.py' ## error in this line

x = np.linspace(1, 10, 100)
y = get_g(x)

plt.plot(x, y)
plt.show()

>> SyntaxError: invalid syntax

在我的第一次尝试中,我试图概括导入py脚本的方法。但是翻译认为fileloc是一个可导入的模块而不是我的意图。我的第二次尝试告诉我,我不理解如何做到这一点的基本原则。如何调整这种方法以使其正常工作? (如果它与文件位置相关,我正在使用苹果笔记本电脑。)

1 个答案:

答案 0 :(得分:1)

由于您的两个python文件位于同一个工作区文件夹中,因此您只需编写

即可
import pre
post.py中的

导入名为pre的模块后,您可以使用

中定义的函数func
pre.func()

如果您不希望每次使用时都为给定的函数func键入模块的名称,则可以执行

from pre import func
func()

您还可以导入给定模块并为方便起见给它一个别名。例如,

import pre as p
p.func()

修改:添加模块和功能用法。