加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

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

如果你想在自己的代码中使用这个模块,那么你必须将其添加至Python的导入检索路径(import search path)。最简单的做法如下:

  1. import 
  2.  sys 
  3. sys.path.append( 
  4. '/path/to/folder/containing/my_package' 
  5. import 
  6.  my_package 

注意,你需要添加的是 my_package的上一层文件夹路径,而不是 my_package本身。原因是 my_package就是我们想要使用的包,所以如果你添加它的路径,那么将无法使用这个包。

我们接下来谈谈可选导入。

可选导入(Optional imports)

如果你希望优先使用某个模块或包,但是同时也想在没有这个模块或包的情况下有备选,你就可以使用可选导入这种方式。这样做可以导入支持某个软件的多种版本或者实现性能提升。以github2包中的代码为例:

  1. try 
  2.   
  3. # For Python 3 
  4.   
  5. from 
  6.  http.client  
  7. import 
  8.  responses 
  9. except 
  10.   
  11. ImportError 
  12. :  
  13. # For Python 2.5-2.7 
  14.   
  15. try 
  16.   
  17. from 
  18.  httplib  
  19. import 
  20.  responses  
  21. # NOQA 
  22.   
  23. except 
  24.   
  25. ImportError 
  26. :  
  27. # For Python 2.4 
  28.   
  29. from 
  30.   
  31. BaseHTTPServer 
  32.   
  33. import 
  34.   
  35. BaseHTTPRequestHandler 
  36.   
  37. as 
  38.  _BHRH 
  39.  responses = dict([(k, v[ 
  40. ])  
  41. for 
  42.  k, v  
  43. in 
  44.  _BHRH.responses.items()] 

lxml包也有使用可选导入方式:

  1. try 
  2.   
  3. from 
  4.  urlparse  
  5. import 
  6.  urljoin 
  7.   
  8. from 
  9.  urllib2  
  10. import 
  11.  urlopen 
  12. except 
  13.   
  14. ImportError 
  15.   
  16. # Python 3 
  17.   
  18. from 
  19.  urllib.parse  
  20. import 
  21.  urljoin 
  22.   
  23. from 
  24.  urllib.request  
  25. import 
  26.  urlopen 

正如以上示例所示,可选导入的使用很常见,是一个值得掌握的技巧。

局部导入

当你在局部作用域中导入模块时,你执行的就是局部导入。如果你在Python脚本文件的顶部导入一个模块,那么你就是在将该模块导入至全局作用域,这意味着之后的任何函数或方法都可能访问该模块。例如:

  1. import 
  2.  sys  
  3. # global scope 
  4. def 
  5.  square_root(a): 
  6.   
  7. # This import is into the square_root functions local scope 
  8.   
  9. import 
  10.  math 
  11.   
  12. return 
  13.  math.sqrt(a) 
  14. def 
  15.  my_pow(base_num, power): 
  16.   
  17. return 
  18.  math.pow(base_num, power) 
  19. if 
  20.  __name__ ==  
  21. '__main__' 
  22.   
  23. print 
  24. (square_root( 
  25. 49 
  26. )) 
  27.   
  28. print 
  29. (my_pow( 
  30. ,  
  31. )) 

(编辑:核心网)

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

热点阅读