Python中的模块是否有标准别名?

时间:2018-12-05 21:27:36

标签: python python-3.x alias python-import standards

按照this post中提出的指南,我将更改所有

from module import function
function(agt)

作者:

import module as mdl
mdl.function(agt)

以我的代码。我正在尝试使用常用别名而不是个人别名。互联网上是否有某种列表汇总所有常用的别名?

例如,这些似乎很常见:

import numpy as np
import math as m
import matplotlib.pyplot as plt

scipy.linalgtimescipy.iocmath等的别名呢?您使用哪个?随意提供其他别名,如果还没有这样的列表,我愿意提出一个(我将更新这篇文章)。

1 个答案:

答案 0 :(得分:5)

否,没有模块缩写的完整列表

没有规范的列表,我也不建议在这里列出(因此,该IMO并不是真正的地方)。 PEP8中为python定义了样式指导,包括命名约定,有关导入的部分为here。好的和有用的建议,但不是枚举的导入别名列表。

关于命名有很多好的规则和建议,其中一些规则和建议也适用于导入的名称。例如,我认为This post可以使我们理解“数学绘图库”到“ mpl”的不太令人惊讶的词源。遵循PEP8 on module names可以帮助我们完全不需要缩写。

请注意,您已将built-in modules(“ time”)与标准但第三方库(“ numpy”混合在一起,该库无处不在,但Guido declined in 2006 to add to the core且必须(分别安装)和通用第三方库(“ matplotlib”) 6 。您可能会 找到内置库和非常常见的库(或通过教程间接获得的)的列表,但是包含第三方库的可能性似乎很小;我建议让软件包的作者决定其标准缩写。 Numpy是一个很好的例子,库的作者在自己的教程中使用“ np”并已“标准化”了库的使用语法。

FWIW,我不喜欢将数学称为“ m”(或者正如一位评论者所建议的那样,将“ os as o”)。一个名字的变量对于像我这样笨拙的程序员来说是个灾难。


我还要指出rationale for including the "as" syntax in the first place,它通过消除可能的名称冲突来证明其合理性(如果从cosscipy导入sympy,则可能玩得很不好)。用它来缩写已经符合PEP命名标准的名称(简短易读,起步),听起来并不应该正式认可,即使方便。

在一个有趣的示例中:heresympyscipy都试图在短时间内使用相同的缩写causing the exact problem we hoped to avoid(尽管现在scipy建议完全不要使用首字母缩写,evidently


脚注

  1. Google还提供了样式指南; they suggest使用import...as“仅在[为]标准缩写(例如npnumpy时)”。抱歉,他们也推迟:)
  2. 不是要挑剔,但您的问题是“我正在更改所有 ... [导入声明]”(强调我的意思)。明确地说,您链接的问题是:“然后在一个或另一个之间进行选择,应基于编码样式。”有时直接导入一个函数或类是完全明确的,imo。例如,包含导入的“ GaussianProcessRegressor”的sklearn tutorial示例不需要进行任何命名间隔或缩写。只有您知道您的应用程序,但是在大多数情况下,假定该名称足够唯一是安全的
  3. 也可以as a versioning hack使用它。我有时会以这种方式使用它,但是我不确定该策略的推荐程度
  4. 有些人掌握了会话use of the word "alias"的技术
  5. Reddit doesn't have a list either
  6. 为澄清评论中的问题,“第三方但标准”和“第三方”之间的界限是非正式的,并非神圣不可侵犯