Python核心编程第二版第十二章:模块(课后习题)----我的答案

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  

猜你喜欢

转载自blog.csdn.net/qq_41805514/article/details/80557778