Python程序设计:人工智能案例实践
上QQ阅读APP看书,第一时间看更新

4.14 import:深入讨论

如果已经使用下面的语句导入了模块(例如mathrandom模块):

    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

库文档中一般会介绍常用的简写名称。

在导入模块时,应使用importimport...as语句,然后分别通过模块名称或as关键字后面的简写来访问模块。这样做可以确保不会意外导入与代码中的标识符相冲突的标识符。