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

jea*_*nej 3 python standards alias python-import python-3.x

按照这篇文章中提出的准则,我将更改所有

from module import function
function(agt)
Run Code Online (Sandbox Code Playgroud)

通过:

import module as mdl
mdl.function(agt)
Run Code Online (Sandbox Code Playgroud)

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

例如,这些似乎很常见:

import numpy as np
import math as m
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

什么别名scipy.linalg,time,scipy.io,cmath等?您使用哪个?随意提供其他别名,如果尚无此类列表,我愿意提出一个(我将更新此帖子)。

en_*_*ght 5

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

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

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

请注意,您已经将内置模块(“ time”)与标准但第三方库(“ numpy”,无处不在,但Guido在2006年拒绝将其添加到内核中,并且必须单独安装)和一般的第三方库混合在一起(“ matplotlib”)6。您可能会找到内置库和非常常见的库的列表(或通过教程找到的间接库),但是包含第三方库的可能性似乎很小。我建议让软件包的作者决定其标准缩写。Numpy是一个很好的例子,库的作者在自己的教程中使用“ np”并已“标准化”了库的使用语法。

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


我还向您指出了首先包含“ as”语法的原理,它通过消除可能的名称冲突(如果cos从scipy和从导入sympy,可能会遇到麻烦)来证明其合理性。使用它来缩写已经遵循PEP命名标准的名称(起步很短,可读性强),即使方便,听起来也不应该被正式认可。

在一个有趣的例子:在这里,sympy并且scipy都试图使用相同的缩写一会儿,导致我们希望避免确切的问题(虽然scipy现在建议不使用的缩写可言,显然)


脚注

  1. Google还提供了样式指南;他们建议使用import...as “仅当[它]一个标准的缩写(例如,np用于numpy)”。抱歉,他们也推迟:)
  2. 不是无所事事,而是您的问题是“我正在更改所有 ... [导入声明]”(强调我的意思)。明确地说,您链接的问题是:“然后在一个或另一个之间进行选择,应基于编码样式。” 有时直接导入一个函数或类是完全明确的,imo。例如,包含“ GaussianProcessRegressor”的导入的本sklearn教程示例无需进行任何命名间隔或缩写。只有您知道您的应用程序,但是在大多数情况下,假定该名称足够唯一是安全的
  3. 这也可以用作版本控制技巧。我有时以这种方式使用它,但是我不确定该策略的推荐程度
  4. 有些人对“别名”一词的会话使用有所了解
  5. Reddit也没有列表
  6. 为了澄清评论中的问题,“第三方但标准”与“第三方”之间的界线是非常非正式的,并非神圣不可侵犯。