如何将所有定义的函数从 python 脚本一导入到 python 脚本二?

How to import all defined functions from python script one into python script two?

我正在尝试将包含多个已定义函数的 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' 的示例脚本如下。

尝试 #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'

尝试 #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 是一个可导入的模块而不是我的意图。我的第二次尝试告诉我,我不了解有关如何执行此操作的一些基本知识。如何调整这种方法以使其正常工作? (如果与文件位置相关,我使用的是苹果笔记本电脑。)

因为你的两个 python 文件在同一个工作区文件夹中,你可以简单地写

import pre

在 post.py 中。导入名为pre的模块后,可以使用

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

如果您不想每次使用给定函数 func 时都键入模块名称,您可以这样做

from pre import func
func()

您也可以导入给定的模块并为它起一个别名以方便使用。例如,

import pre as p
p.func()

编辑: 添加模块和函数用法。