上QQ阅读APP看书,第一时间看更新
4.14 import
:深入讨论
如果已经使用下面的语句导入了模块(例如math
和random
模块):
import module_name
就可以通过每个模块的名称和一个点(.
)访问包含在模块中的函数。如果使用下面的代码从模块中导入特定的标识符(例如decimal
模块的Decimal
类型):
from module_name import identifier
则可以直接使用该标识符,而不必在其前面加上模块名称和点(.
)。
从一个模块导入多个标识符
使用from...import
语句,可以从模块中导入以逗号分隔的标识符列表,然后在代码中直接使用它们,而不必在它们之前添加模块名和点(.
):
尝试使用未导入的函数会引发NameError
,表示名称未定义。
警告:避免使用通配符
可以使用通配符导入模块中定义的所有标识符,如下所示:
这将使模块内所有的标识符都可以在这段代码中使用。但是,使用通配符导入模块的标识符可能会导致不易察觉的错误,这种做法比较危险,应尽量避免。例如下面的代码段:
代码段[4]
将字符串'hello'
赋值给名为e
的变量。在执行代码段[5]
之后,变量e
可能被意外地替换为数学模块中的常数e
,表示数学浮点值e
。
绑定模块与模块标识符的名称
有时使用缩写来代表导入的模块可以简化程序代码。import
语句的as
子句允许指定用于引用模块的标识符名称。例如,3.14节中的代码可以按照下面的代码所示的方式导入statistics
模块并访问其mean
函数:
语句import...as
通常用于导入带有方便简写的Python库,比如将statistics
模块简写为stats
,再比如使用numpy
模块时通常会以下面的方式将其导入:
import numpy as np
库文档中一般会介绍常用的简写名称。
在导入模块时,应使用import
或import...as
语句,然后分别通过模块名称或as
关键字后面的简写来访问模块。这样做可以确保不会意外导入与代码中的标识符相冲突的标识符。