如何将所有定义的函数从 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()
编辑: 添加模块和函数用法。
我正在尝试将包含多个已定义函数的 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的模块后,可以使用
定义在其中的函数funcpre.func()
如果您不想每次使用给定函数 func 时都键入模块名称,您可以这样做
from pre import func
func()
您也可以导入给定的模块并为它起一个别名以方便使用。例如,
import pre as p
p.func()
编辑: 添加模块和函数用法。