3.2. 使用 from module import 导入模块

Python有两种导入模块的方法。两种都有用,你应该知道什么时候使用哪一种方法。一种方法, import module,你已经在第一章看过了。另一种方法完成同样的事情,但是它以细微但重要的不同方式工作。

例3.3. 基本的 from module import 语法


from UserDict import UserDict

这种语法与你所知的 import module 语法类似,但是有一个重要的区别:导入模块 types 的属性和方法被直接导入到局部名字空间中,所以这些属性和方法是直接有效的,不需要通过模块名来限定。

Note
Python中的 from module import 象Perl中的 use module ;Python中的 import module 象Perl中的 require module
Note
Python中的 from module import 象Java中的 import module.* ;Python中的 import module 象Java中的 import module

例 3.4. import module 对比 from module import

>>> import types
>>> types.FunctionType             1
<type 'function'>
>>> FunctionType                   2
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
NameError: There is no variable named 'FunctionType'
>>> from types import FunctionType 3
>>> FunctionType                   4
<type 'function'>
1

types 模块不包含方法,只有每个Python对象类型的属性。注意,FunctionType 属性必需用 types 模块名进行限定。

2 FunctionType 本身没有被定义在当前名字空间中;它只存在于 types 的上下文环境中。
3 这个语法直接从 types 模块中导入 FunctionType 属性到局部名字空间。
4 现在 FunctionType 可以直接访问,不需要引用 types

什么时候你应该使用 from module import

除了这些情况,剩下的只是风格问题了,你会看到用两种方式编写的Python代码。

进一步阅读