Q:python模块中的相对导入,绝对导入,有些地方会写

from __future__ import absolute_import

希望有个更详细的讲解。

A:

相对导入:在不指明 package 名的情况下导入自己这个 package 的模块,比如一个 package 下有 a.py 和 b.py 两个文件,在 a.py 里 from . import b 即是相对导入 b.py。

绝对导入:指明顶层 package 名。比如 import a,Python 会在 sys.path 里寻找所有名为 a 的顶层模块。

from __future__ import absolute_import: 在 3.0 以前的旧版本中启用绝对导入等特性所必须的 future 语句。

关于这句from __future__ import absolute_import的作用: 
直观地看就是说”加入绝对引入这个新特性”。说到绝对引入,当然就会想到相对引入。那么什么是相对引入呢?比如说,你的包结构是这样的: 
pkg/ 
pkg/init.py 
pkg/main.py 
pkg/string.py

如果你在main.py中写import string,那么在Python 2.4或之前, Python会先查找当前目录下有没有string.py, 若找到了,则引入该模块,然后你在main.py中可以直接用string了。如果你是真的想用同目录下的string.py那就好,但是如果你是想用系统自带的标准string.py呢?那其实没有什么好的简洁的方式可以忽略掉同目录的string.py而引入系统自带的标准string.py。这时候你就需要from __future__ import absolute_import了。这样,你就可以用import string来引入系统的标准string.py, 而用from pkg import string来引入当前目录下的string.py了

关于是自己写的应用程序还是发布出去的第三方的包,这句话的含义不太理解,参考:

http://blog.csdn.net/stan_pcf/article/details/60465665

最新文章

  1. iOS组件化思路 <转>
  2. About_全在里面
  3. git更换仓库地址
  4. python 函数小实例
  5. CG资源网 - Maya教程
  6. 优化MySQL,还是使用缓存?读一篇文章有感
  7. EF 用CallContext上下文管理
  8. 在Oracle中使用rank()over()排名的问题
  9. linux下的shell和脚本
  10. WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
  11. seajs简记
  12. iOS 10推送通知开发
  13. java精度计算代码,指定精确小数位
  14. 通过bootloader向内核传输启动参数
  15. js中的for循环案例
  16. Asp.net core Razor 页面
  17. [Luogu3768]简单的数学题
  18. [2017.4.7校内训练赛by hzwer]
  19. Java多线程volatile和synchronized总结
  20. ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES)【奇葩的bug】

热门文章

  1. solver
  2. python递归与非递归实现斐波那契数列
  3. jquery Syntax error, unrecognized expression:的解决方法
  4. iOS 开发 Xib 的嵌套使用
  5. 洛谷 P1593 因子和
  6. python入门:从安装python开始
  7. Linux 用户管理(一)
  8. 【markdown】图片的处理
  9. 【mysql】The server quit without updating PID file
  10. supervisor 安装使用