12-1.路径搜索和搜索路径。路径搜索和搜索路径之间有什么不同?
路径搜索和搜索路径是两个不同的概念,前者是指查找某个文件的操作,是一个搜索过程;而后者是去查找一组目录,是实际存在的一条路径。当模块不在搜索路径里,从而导致了路径搜索的失败。
12-2.导入属性。假设你的模块mymodule里有一个foo()函数。
(a)把这个函数导入到你的名称空间有哪两种方法?
from mymodule import foo import mymodule.foo()
(b)这两种方法导入后的名称空间有什么不同?
调用from-import可以把名字导入当前的名称空间里去。使用import通过句点属性标识指定了各自的名称空间,可以防止名称冲突的发生,使用句点属性和from-import作用一致。
12-3.导入“import module”和”from module import *“有什么不同?
使用from-import可以使名字导入当前名称空间,从而不用使用句点属性调用。
12-4.名称空间和变量作用域。名称空间和变量作用域有什么不同?
名称空间是纯粹意义上的名字和对象间的映射关系,而作用域还指出了从用户代码的哪些物理位置可以访问到这些名字。
12-5.使用__import__()。
(a)使用__import__把一个模块导入到你的名称空间。你最后使用了什么样的语法?
__import__('sys')
(b)和上边相同,使用__import__()从指定模块导入特定的名字。
__import__('sys',globals(),locals(),['path'] )
12-6.扩展导入。创建一个importAs()函数。这个函数可以把一个模块导入到你的名称空间,但使用你指定的名字,而不是原始名字。例如,调用newname=importAs(‘mymodule’)会导入mymodule,但模块和它的所有元素都通过新名称newname或newname.attr访问。这是Python 2. 0引入的扩展导入实现的功能。
def importAs(module): newname = __import__(module) retrun newname