假设我有两个文件。第一个包含我编写的所有函数以及我通常从主文件中导入的函数:
# 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])
有更有效的方法导入此功能吗?我是否必须为我创建的每个功能导入每个模块?如果我在同一个文件中有多个函数依赖于同一个模块,那该怎么办?
答案 0 :(得分: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)
答案 1 :(得分:1)
您可以将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
,您会发现y()
会返回5,无论您是否导入x
。无论功能对象需要做什么工作,它都随身携带。这包括何时将其导入另一个模块。
答案 2 :(得分:0)
你也可以这样做。
# main.py
from my_functions import *
print(sqrt_product(3, 3))
print(create_df([1, 2, 3])
答案 3 :(得分:-1)
有几种方法可以做到这一点。
从当前目录导入文件。
确保两个文件都在同一目录中。
导入文件和功能如下:
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