2017-10-29 109 views
0

我想將包含幾個定義函數的python腳本導入到不同的python腳本using this approach via SO。由於我想導入的腳本定義了許多函數(其中一些嵌套在其他函數中),我寧願導入整個腳本而不是單獨導入每個函數。我在下面使用一個更簡單的例子。如何將所有已定義的函數從python腳本一導入python腳本二?

假設我在我的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 

在我第一次嘗試,我試着概括進口吡啶腳本的方法。但翻譯認爲fileloc是一個可導入的模塊,而不是我的意圖。我的第二次嘗試告訴我,我不瞭解如何做到這一點的基本知識。這種方法如何適應正確的工作? (我使用的是蘋果筆記本電腦,如果是相關的文件位置)。

+1

查看鏈接的dupe。^ –

回答

1

因爲你的兩個Python文件是在同一個工作區文件夾,您可以簡單的寫

import pre 

在post.py.導入模塊名爲PRE後,可以通過

pre.func() 

使用它定義的函數func如果你不希望在每次使用它時都必須鍵入模塊的名稱對給定函數func,可以做

from pre import func 
func() 

您也可以導入給定的模塊,並給它一個別名,以方便。例如,

import pre as p 
p.func() 

編輯:添加模塊和功能用途。

+0

我嘗試過,但我收到此錯誤。 'y = get_g(x) NameError:名稱'get_g'未定義' – mikey

+0

請參閱我的最新編輯。 – eozd