我有一个带有许多.py脚本的Python项目。大多数脚本与类似的import语句很像。构造此类进口的一般惯例是什么?
如果有帮助,我的导入看起来像这样,还有更多。
import datetime
import logging
import random
import sys
import os
import operator
import warnings
import json
import numpy as np
import parseJSON
import pandas as pd
from sklearn.svm import SVC
from sklearn import svm
from sklearn import linear_model
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble.forest import RandomForestClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model import SGDClassifier
from sklearn import neighbors
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis
from sklearn.metrics import accuracy_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.preprocessing import LabelEncoder
答案 0 :(得分:1)
PEP 8 style guide是此类事情的权威来源。根据您的具体情况,有一个for imports小节,内容如下(强调我的意思):
进口应按以下顺序分组:
标准库导入。相关第三方进口。本地 应用程序/库特定的导入。你应该留一个空白行 在每组进口之间。
建议绝对导入,因为它们通常更易读 并表现得更好...
这将表明最佳实践是按照选项(1)中所述进行操作。
作为一个轶事,如果我(或您)必须在将来编辑一个.py文件,我希望以预期的格式查看每个导入,因此无论我打开哪个脚本文件,我都知道依赖项< / p>
答案 1 :(得分:1)
我建议将文件需要的导入放置在该文件中。如果恰好在几个文件中都需要一个模块-没关系。 Python仅加载一次模块。我发现唯一值得注意的是在自定义模块中导入了相同的模块,而main(main也导入了我的自定义api模块)是在检查异常时:
我的api.py有import pycurl
我的main.py有import api
而且它以前也有import pycurl
我能够识别pycurl异常,例如
...
except pycurl.error as e:
后来我从main.py中删除了pycurl的导入 并且上面的代码不再起作用。相反,我必须这样做:
...
except api.pycurl.error as e:
希望这会有所帮助
编辑:
您从sklearn
导入了很多内容,有些重复了。尽管不是很关键,但这确实会妨碍代码的可读性。也许您应该只自己导入sklearn,然后在类似sklearn.naive_bayes.GaussianNB
的代码中调用它的组件,这将带来额外的好处,即在代码中显示哪些对象属于sklearn,但要花更多的时间。 / p>