这是自己做的练习,可能有错误,欢迎讨论和各种优化重构方案。

12-1.
路径搜索和搜索路径。路径搜索和搜索路径之间有什么不同。
【答案】
路径搜索(Search Path)搜索路径(Path Search),前者指查找某个文件的操作(the pursuit of a file),后者是去查找一组目录(through a set of directories)。本文来自博客园balian
默认搜索路径是编译或者安装时指定。查看当前搜索路径参看下例。可以用列表的append()方法添加搜索路径。

>>> import sys
>>> sys.path
['', 'D:\\Python27\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python2
7', 'D:\\Python27\\lib\\site-packages']
>>>

 

12-2.
导入属性。假设你的模块mymodule里面有一个foo()函数。
(a)把这个函数导入到你的名称空间有哪两种方法?
(b)这两种方法导入后的名称空间有什么不同?
【答案】
(a)使用import语句(import module)和使用from-import语句(from module import)。避免使用from module import *语句。 
(b)使用from-import语句,foo()被直接导入到局部名字空间去了,所以它必须被直接使用,而不能加上模块名的限定。
如果用12-1题的sys模块中path()函数作为例子:
采用第一种方法(import module)代码如下:

>>> import sys
>>> sys.path # 需要加上模块名的限定
['', 'D:\\Python27\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python2
7', 'D:\\Python27\\lib\\site-packages']
>>> path # 注意这里的错误,path()不可以直接使用
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'path' is not defined
>>>


采用第二种方法(from module import)代码如下:

>>> from sys import path
>>> sys.path # 主要这里的错误,不能加上模块名的限定
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
#本文来自博客园balian
>>> path # path()必须直接使用
['', 'D:\\Python27\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python2
7', 'D:\\Python27\\lib\\site-packages']
>>>

 

【参考】
python模块的导入的两种方式区别详解
http://developer.51cto.com/art/201003/189555.htm

python导入模块的三种方法
http://www.docin.com/p-56218303.html

12-3.
导入“import module”和“from module import *”有什么不同?
【答案】
“from module import *”可以把指定模块的所有名称导入到当前的名称空间,但这种用法必须受到限制。参见本书317页。

posted on 2012-08-11 08:48  balian  阅读(699)  评论(2编辑  收藏  举报