【问题标题】:Why use `import as` on some python modules but not others? [closed]为什么在某些 python 模块上使用 `import as` 而在其他模块上不使用? [关闭]
【发布时间】:2020-07-22 12:58:26
【问题描述】:

为什么像 globpsycopg2 这样的包在导入时没有缩短?除了惯例或个人喜好之外,还有其他原因吗?也许是最佳实践?


示例:为了可读性和减少加载整个包的开销:

# Best practice
from sklearn.metrics import r2_score
model_score = r2_score(arg1, arg2)

# Similarly, to keep names short
import sklearn
model_score = sklearn.metrics.r2_score(arg1, arg2)

类似示例:只是缩短了长包名,尤其是在使用了包的许多部分时

# Best practice
import pandas as pd
import numpy as np
import seaboard as sns
import matplotlib.pyplot as plt

df = pd.DataFrame(dictobject)
w_avg = np.average(mylist, weights=w)
sns.heatmap(df)
plt.show()

# instead of
import pandas
import numpy
import seaboard
import matplotlib

df = pandas.DataFrame(dictobject)
w_avg = numpy.average(mylist, weights=w)
seaborn.heatmap(df)
matplotlib.pyplot.show()

为什么我们不对 glob 做同样的事情?

# Shouldn't this be best practice?
import glob.glob as gl
jpgs = gl('path/*.jpg')

# But instead this seems more prominent:
import glob
jpgs = glob.glob('path/*.jpg')

也许如果我们需要glob.glob 的一个鲜为人知的表亲(glob.iglobglob.escape),我们可以import glob as gl(然后使用gl.iglobgl.escape)。

这个问题:python import module vs import module as,没有回答我的问题。

【问题讨论】:

  • "Is there any other reason than convention or personal preference?" 不,这就是为什么我投票结束这个问题为“基于意见”
  • 并不是说有些模块缩短了,有些模块没有缩短。 glob 等模块只是定义了一个与模块同名的类。所以glob.glob 表示在包内glob 访问类glob,类似于pandas.DataFrame 表示在模块内pandas 访问类DataFrame。其他一切都基于偏好或您需要访问的模块方法和结构。
  • @h0r53 这不是 OP 所要求的。他们问为什么看到import pandas as pd而不是import glob as g是一种“惯例”
  • 那么是的,这是基于意见的,不太适合这里
  • 感谢您的意见。我的问题是“做 X 有什么理由吗?”,客观的答案似乎是:“不,这纯粹是惯例和个人喜好”。我不相信这是基于意见的。

标签: python module python-import


【解决方案1】:

不,这纯粹是惯例和个人喜好

【讨论】:

  • 卢克你好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
相关资源
最近更新 更多