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