加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 建站 > 正文

关于Python导入模块,你可能没学透

发布时间:2019-10-26 16:54:09 所属栏目:建站 来源:马哥Linux
导读:副标题#e# 作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包。但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活。在本文中,我们将探讨以下话题: 常规导入(regular imports) 使用from语句

接下来进入 subpackage1文件夹,编辑其中的 __init__.py文件,输入以下代码:

  1. from 
  2.  .  
  3. import 
  4.  module_x 
  5. from 
  6.  .  
  7. import 
  8.  module_y 

现在编辑 module_x.py文件,输入以下代码:

  1. from 
  2.  .module_y  
  3. import 
  4.  spam  
  5. as 
  6.  ham 
  7. def 
  8.  main(): 
  9.  ham() 

最后编辑 module_y.py文件,输入以下代码:

  1. def 
  2.  spam(): 
  3.   
  4. print 
  5. 'spam ' 
  6.  *  

打开终端, cd至 my_package包所在的文件夹,但不要进入 my_package。在这个文件夹下运行Python解释器。我使用的是IPython,因为它的自动补全功能非常方便:

  1. In 
  2.  [ 
  3. ]:  
  4. import 
  5.  my_package 
  6. In 
  7.  [ 
  8. ]: my_package.subpackage1.module_x 
  9. Out 
  10. ]: < 
  11. module 
  12.   
  13. 'my_package.subpackage1.module_x' 
  14.   
  15. from 
  16.   
  17. 'my_package/subpackage1/module_x.py' 
  18. In 
  19.  [ 
  20. ]: my_package.subpackage1.module_x.main() 
  21. spam spam spam 

相对导入适用于你最终要放入包中的代码。如果你编写了很多相关性强的代码,那么应该采用这种导入方式。你会发现PyPI上有很多流行的包也是采用了相对导入。还要注意一点,如果你想要跨越多个文件层级进行导入,只需要使用多个句点即可。不过,PEP 328建议相对导入的层级不要超过两层。

还要注意一点,如果你往 module_x.py文件中添加了 if__name__==‘__main__’,然后试图运行这个文件,你会碰到一个很难理解的错误。编辑一下文件,试试看吧!

  1. from 
  2.  . module_y  
  3. import 
  4.  spam  
  5. as 
  6.  ham 
  7. def 
  8.  main(): 
  9.  ham() 
  10. if 
  11.  __name__ ==  
  12. '__main__' 
  13.   
  14. # This won't work! 
  15.  main() 

现在从终端进入 subpackage1文件夹,执行以下命令:

  1. python module_x.py 

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读