这是自己做的练习,可能有错误,欢迎讨论和各种优化重构方案。
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页。