| 
                         如果你想在自己的代码中使用这个模块,那么你必须将其添加至Python的导入检索路径(import search path)。最简单的做法如下: 
- import 
 -  sys 
 - sys.path.append( 
 - '/path/to/folder/containing/my_package' 
 - ) 
 - import 
 -  my_package 
 
  
注意,你需要添加的是 my_package的上一层文件夹路径,而不是 my_package本身。原因是  my_package就是我们想要使用的包,所以如果你添加它的路径,那么将无法使用这个包。 
我们接下来谈谈可选导入。 
可选导入(Optional imports) 
如果你希望优先使用某个模块或包,但是同时也想在没有这个模块或包的情况下有备选,你就可以使用可选导入这种方式。这样做可以导入支持某个软件的多种版本或者实现性能提升。以github2包中的代码为例: 
- try 
 - : 
 -   
 - # For Python 3 
 -   
 - from 
 -  http.client  
 - import 
 -  responses 
 - except 
 -   
 - ImportError 
 - :  
 - # For Python 2.5-2.7 
 -   
 - try 
 - : 
 -   
 - from 
 -  httplib  
 - import 
 -  responses  
 - # NOQA 
 -   
 - except 
 -   
 - ImportError 
 - :  
 - # For Python 2.4 
 -   
 - from 
 -   
 - BaseHTTPServer 
 -   
 - import 
 -   
 - BaseHTTPRequestHandler 
 -   
 - as 
 -  _BHRH 
 -  responses = dict([(k, v[ 
 - 0 
 - ])  
 - for 
 -  k, v  
 - in 
 -  _BHRH.responses.items()] 
 
  
lxml包也有使用可选导入方式: 
- try 
 - : 
 -   
 - from 
 -  urlparse  
 - import 
 -  urljoin 
 -   
 - from 
 -  urllib2  
 - import 
 -  urlopen 
 - except 
 -   
 - ImportError 
 - : 
 -   
 - # Python 3 
 -   
 - from 
 -  urllib.parse  
 - import 
 -  urljoin 
 -   
 - from 
 -  urllib.request  
 - import 
 -  urlopen 
 
  
正如以上示例所示,可选导入的使用很常见,是一个值得掌握的技巧。 
局部导入 
当你在局部作用域中导入模块时,你执行的就是局部导入。如果你在Python脚本文件的顶部导入一个模块,那么你就是在将该模块导入至全局作用域,这意味着之后的任何函数或方法都可能访问该模块。例如: 
- import 
 -  sys  
 - # global scope 
 - def 
 -  square_root(a): 
 -   
 - # This import is into the square_root functions local scope 
 -   
 - import 
 -  math 
 -   
 - return 
 -  math.sqrt(a) 
 - def 
 -  my_pow(base_num, power): 
 -   
 - return 
 -  math.pow(base_num, power) 
 - if 
 -  __name__ ==  
 - '__main__' 
 - : 
 -   
 - print 
 - (square_root( 
 - 49 
 - )) 
 -   
 - print 
 - (my_pow( 
 - 2 
 - ,  
 - 3 
 - )) 
 
                          (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |