我应该创建一个我经常使用的python函数模块吗

我应该创建一个我经常使用的python函数模块吗,python,Python,有一些简单的代码(如数据聚类等),我一次又一次地使用,每次我在网上搜索或查看我以前的代码 然后我考虑为代码创建函数并将它们写入模块。因此,我创建了一个myfunctions.py文件,其内容如下: import numpy as np import pandas as pd from sklearn.cluster import KMeans def kmeans(data,elbowplot=False,maxcluster=10, nclusters,scatter2

有一些简单的代码(如数据聚类等),我一次又一次地使用,每次我在网上搜索或查看我以前的代码

然后我考虑为代码创建函数并将它们写入模块。因此,我创建了一个myfunctions.py文件,其内容如下:

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans

def kmeans(data,elbowplot=False,maxcluster=10,
           nclusters,scatter2=False,dotsize=50,colormap='viridis'):

    data = pd.DataFrame(data)

    if elbowplot == True:
        sum_of_squares = []
        K = range(1,maxcluster)
        for k in K:
            kmeansAlgo = KMeans(n_clusters=k).fit(data)
            sum_of_squares.append(kmeansAlgo.inertia_)

        plt.plot(K, sum_of_squares, 'bo-')
        plt.xlabel('number of clusters')
        plt.ylabel('Sum of squared distances')
        plt.title('Elbow Method For Optimal k')
        plt.show()

    kmeansAlgo = KMeans(n_clusters=nclusters)
    kmeansAlgo.fit(data)
    kmeansgroups = kmeansAlgo.predict(data)

    if scatter2 == True:
        x = data.iloc[:,0]
        y = data.iloc[:,1]
        plt.scatter(x, y, c=kmeansgroups, s=dotsize, cmap=colormap)

    return kmeansgroups
然后,在另一个文件中,我只需键入

import myfunctions
然后开始使用我的函数。然而,我怀疑这种方法有一些低效之处。例如,我必须在代码中再次导入模块(如熊猫)


所以,我的问题是,为什么我必须再次导入模块?使用这种方法是否效率低下?

否这正是python中模块和可导入库的使用案例。 在python中,多次导入模块实际上并没有导入那么多次


这是python中的标准实践,一点也不低效。

严格来说,您不必再次导入模块,因为您可以通过以下方式访问它们:

myfunctions.np
这将需要更多的代码,而不是像

a = np.zeros(shape=(30,20))
你现在正在打字

a = myfunctions.np.zeros(shape=(30,20))
除了不切实际之外,您不应该这样做的另一个原因是:您应该尝试在文件顶部执行所有导入操作,以便任何阅读您的代码的人都知道您导入的模块以及您为它们使用的名称


一般来说,如果您在不同的项目中或在一个项目中的不同文件中反复使用某些函数,那么将这些函数放入模块中并不是一个坏主意。但是不要认为在这个模块和其他文件中编写import语句是低效的,应该把它看作是提高可读性

没有什么严重的情况发生,如果您导入一个已经导入的表单,它不会再次加载,您只会得到一个对已导入表单的引用。

重新导入同一个模块只会导致对该模块的新引用,因此不会引起问题()。如果你只是为了个人使用,那应该没问题。