Python模块四种导入方式详解

Python模块四种导入方式详解

02730

根据所要引入模块的内容不同,可以将模块的导入方式分为四种。下面依次介绍。

import as方式

import as 的方式其实是实现了两步操作:先将模块导入,再为模块重命名。其写法如下:

import a as b

其中,a 代表要引入的模块,b 是将 a 重命名后的名称。即,将模块a 导入,并将其重命名为 b。
举例如下:

import time as x    #导入模块time并将其重命名为x
s = x.ctime()#调用模块time中的ctime函数,得到当前时间
print(s)#将时间输出:Thu Mar 1 14:59:17 2018

例子中,把引入的 time 模块重命名为 x,后面就可以使用 x 来调用 time 模块,并调用其 ctime 方法以获得当前时间。

from import方式

from import 方式是直接把模块内的函数或变量的名称导入当前模块。其写法如下:

from a import func

上述代码表示,将模块 a 中的 func 函数导入到当前模块。使用这种方式导入时,当前模块将只能使用 a 中的 func 函数,无法使用 a 中的其他函数。例如:

from time import ctime #导入模块time中的ctime函数
s = ctime()#直接调用函数
print(s)#将时间输出:Thu Mar 1 14:59:17 2018

例子中,先从 time 模块中导入 ctime 函数,接着就可以直接使用 ctime 函数来获得时间。因为只导入了 time 模块中的一个函数,如想再调用 time 模块中的其他函数,则系统会报错。
例如,接上面代码,添加如下语句:

print(time.time())

运行时,程序会报错:

NameError:name 'time' is not defined

因为程序只引入了ctime函数,并不知道time模块,所以提示time没定义。

from import*方式

from import * 方式将模块中所有的名字(以下画线开头的名字除外)导入到当前模块符号表里。具体代码如下:

from time import *  #导入模块time中的所有名字(以下画线开头除外)
s = ctime()#直接调用函数
print(s) #将时间输出:Thu Mar 1 14:59:17 2018

这时再运行time中的time函数就不会报错了。代码如下:

print(time()) #返回当前时间的时间戳(1970纪元后经过的浮点秒数)输出:1519889455.5011432

提示:使用 from import* 方式导入模块的好处是方便,弊端是容易产生名字冲突(如果当前模块里也有个 ctime 函数,就会跟导入的 ctime 发生名字冲突)。这是需要注意的地方。

导入文件名中带空格的模块

我们知道,模块是一个代码文件。而代码文件的命名规范是符合操作系统的命名规则的。在操作系统中允许文件名中出现空格,但这个规则与 Python 语法发生冲突,因为在 Python 中是以空格来隔离一行语句中的不同元素的。在这种情况下,导入带空格的模型会带来麻烦。

解决办法是使用 __import__ 方法。假设有个模块叫作“ai-yi biancheng ”,要在当前文件引入它时,可以写成如下样子:

biancheng = __import__("ai-yi biancheng")

使用 __import__ 方法,将模块名称用字符串的方式传入,就可以得到该模块的引用了。

注意:除了模块名字中间带空格的情况外,如模块名字是以数字开头的,也无法正常导入,需要使用__import__方法才可以解决这个问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情