python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python单下划线与双下划线及绝对导入与相对导入

python中的单下划线与双下划线以及绝对导入与相对导入

作者:打工人小飞

这篇文章主要介绍了python中的单下划线与双下划线以及绝对导入与相对导入说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

单下划线与双下划线

在 python 中,会看到 _xx, xx 以及 __xx 这样的变量或者函数名,在这里做一个简要的总结。

下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,应避免用下划线作为变量名的开始。

绝对导入与相对导入

既然上文说到了包的导入,就顺便把 python 的包内导入规则说一下,分为绝对导入与相对导入。

在 3.0 以前的旧版本中启用相对导入等特性所必须的 _future_ 语句:

from __future__ import absolute_import

python 包的概念:包含 _init_.py 文件的目录,该文件在包导入时会被首先执行,该文件可以为空,也可以在其中加入任意合法的 python 代码。

相对导入的特点:可以避免硬编码带来的维护问题,例如我们改了某一顶层包的名,那么其子包所有的导入就都不能用了。

但是 存在相对导入语句的模块,不能直接运行,否则会有异常:

ValueError: Attempted relative import in non-package

尽管使用相对导入看起来像是浏览文件系统,但是不能到定义包的目录之外。也就是说,使用点的这种模式从不是包的目录中导入将会引发错误。

绝对导入的特点:可以避免与标准库命名的冲突,实际上也不推荐自定义模块与标准库命令相同。

硬编码的概念

与软编码的区别是,软编码可以在运行时确定,修改;而硬编码是不能够改变的。

举个例子:

例如求圆的面积问题,那么 3.14*r*r 就是硬编码,而 PI*r*r 就不是硬编码。

把数值写成常数而不是变量即硬编码。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文