![](/img/trans.png)
[英]How to import module from one python file to another python file?
[英]Python: how to properly import a function from another file that depends on module
假設我有兩個文件。 第一個包含了我編寫的所有功能,這些功能通常是從主文件中導入的:
# my_functions.py
def sqrt_product(a, b):
from math import sqrt
return sqrt(a*b)
def create_df(lst):
from pandas import DataFrame as df
return df(lst)
和我的主文件:
# main.py
from my_functions import sqrt_product, create_df
print(sqrt_product(3, 3))
print(create_df([1, 2, 3])
有沒有更有效的方法來導入此功能? 我必須為我創建的每個功能導入每個模塊嗎? 如果我在依賴同一模塊的同一文件中有多個功能,那會怎樣?
就是這樣
import my_functions as repo
用法:
repo.sqrt_product(a, b)
repo.create_df(lst)
print(repo.sqrt_product(3, 3))
print(repo.create_df([1, 2, 3])
現在,“ repo”位於名稱空間中。 就像import pandas as pd
, pd
在命名空間中。
# my_functions.py
from math import sqrt
from pandas import DataFrame as df
#Or import pandas as pd
def sqrt_product(a, b):
return sqrt(a*b)
def create_df(lst):
return df(lst)
#return pd.DataFrame(lst)
您可以將from pandas import DataFrame
(可選地使用as df
)移動到my_functions.py
的頂部,然后將create_df
重新定義為:
def create_df(lst):
return DataFrame(lst) # or df(lst) if you used as
當您導入create_df
函數時,它仍然可以工作,而無需從pandas
導入任何內容。 它將導入執行它所需的所有操作。
這不僅適用於導入的依賴項。
x = 5
def y():
return x
如果您去其他地方並import y
,則無論您是否導入x
,您都會發現y()
返回5。 無論功能對象需要做什么工作,它都隨身攜帶。 這包括何時將其導入另一個模塊。
您也可以這樣做。
# main.py
from my_functions import *
print(sqrt_product(3, 3))
print(create_df([1, 2, 3])
有幾種方法可以做到這一點。
從當前目錄導入文件。
確保兩個文件都在同一目錄中。
導入文件和功能,如下所示:
from thing_to_import_from import function_to_import1, function_to_import2
從另一個目錄導入文件。
如果文件位於同一目錄中的文件夾或子文件夾中,並且路徑中不包含空格,則可以將其導入,如下所示:
from folder/subfolder/thing_folder/thing_to_import_from import function_to_import
否則,將路徑添加到python sys.path,然后像以前一樣導入。
import sys sys.path.insert(0, "/folder/subfolder/thing folder") from thing_to_import_from import function_to_import
將文件放入python模塊。
僅當您打算長時間在多個程序中使用該文件時,才應該這樣做。 不要垃圾您的Lib文件夾!
將腳本導入為模塊!
from thing_to_import_from import function_to_import
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.