第12章 模块(3)

12.6 模块内建函数

12.6.1 __import__()

import语句调用__import__()函数完成它的工作。提供这个函数是为了让有特殊需要的用户覆盖它,实现自定义的导入算法。

__import__(module_name[, globals[,locals[,fromlist]]])

调用import sys语句可以使用下边的语句完成:

>>> sys = __import__('sys')
>>> sys
<module 'sys' (built-in)>
>>>

12.6.2 globals()和locals()

globals()和locals()内建函数分别返回调用者全局和局部名称空间的字典。在一个函数内部,局部名称空间代表在函数执行时候定义的所有名字,locals函数返回的就是包含这些名字的字典。globals()会返回函数可访问的全局名字。

在全局名称空间下,globals()和locals()返回相同的字典。

12.7 包

包是一个有层次的文件目录结构,它定义了一个由模块和子包组成的Python应用程序执行环境。

12.7.2 使用from-import导入包

包同样支持from-import all语句。

语法的第一部分是一个句点,指示一个相对的导入操作。之后的其他附加句点代表当前from起始查找位置后的一个级别。

>>> from .Analog import dial

12.8 模块的其他特性

12.8.1 自动载入的模块

sys.modules变量包含一个由当前载入到解释器的模块组成的字典,模块名作为键,它们的位置作为值。

>>> sys.modules.keys()
['heapq', 'code', 'pywin.framework.cmdline', ........

12.8.2 阻止属性导入

如果你不想让某个模块属性被"from module import*"导入,那么你可以给你不想导入的属性名称加上一个下划线(_)。不过如果你导入了整个模块或是你显式地导入某个属性,这个隐藏数据的方法就不起作用了。

你可能感兴趣的:(模块)