《Python核心编程》第12章 习题

第一题:

路径搜索和搜索路径。路径搜索和搜索路径之间有什么不同?

解答:前者是指查找某个文件的操作,后者是去查找一组目录。

第二题:

导入属性。假设你的模块mymodule里有一个foo()函数。

(a)把这个函数导入到你的名称空间有哪两种方法?

import mymodule
from mymodule import foo

(b)这两种方法导入后的名称空间有什么不同?

解答:第一种将mymodule里的属性全部导入,第二种只导入foo

第三题:

导入“import module”和“from module import*”有什么不同?

解答:调用from-import可以把名字导入当前的名称空间里去,这意味着你不需要使用属性/句点属性标识来访问模块的标识符。

第四题:

名称空间和变量作用域。名称空间和变量作用域有什么不同?

解答:名称空间是纯粹意义上的名字和对象间的映射关系,而作用域还指出了从用户代码的哪些物理位置可以访问到这些名字。

第五题:

使用__import__()。

(a)使用__import__把一个模块导入到你的名称空间。你最后使用了什么样的语法?

[python]  view plain  copy
  1. __import__('sys')  
    (b)和上边相同,使用__import__()从指定模块导入特定的名字。

[python]  view plain  copy
  1. __import__('sys',globals(),locals(),['path']  


第六题:

扩展导入。创建一个importAs()函数。这个函数可以把一个模块导入到你的名称空间,但使用你指定的名字,而不是原始名字。例如,调用newname=importAs(‘mymodule’)会导入mymodule,但模块和它的所有元素都通过新名称newname或newname.attr访问。这是Python 2. 0引入的扩展导入实现的功能。

 
[python]  view plain  copy
  1. def importAs(module):  
  2.     newname = __import__(module)  
  3.     retrun newname  

第七题:

导入钩子。研究PEP 302的导入钩子机制。实现你自己的导入机制,允许编码你的模块(encryption、bzip2、rot13等),这样解释器会自动解码它们并正确导入。你可以参看zip文件导入的实现(参阅第12.5.7节)。


猜你喜欢

转载自blog.csdn.net/qq_20113327/article/details/61203222