Python中的模块
在Python中有一个概念叫做模块(module)。
说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块
比如我们经常使用工具 random,就是一个模块。使用 import random
导入工具之后,就可以使用 random 的函数。
导入模块
1. 导入模块有五种方式
import 模块名
from 模块名 import 功能名
from 模块名 import *
import 模块名 as 别名
from 模块名 import 功能名 as 别名
2. import
在Python中用关键字import
来引入某个模块,比如要引入系统模块 math
,就可以在文件最开始的地方用import math
来引入。
语法:
代码语言:javascript复制import 模块1,模块2,... # 导入方式
模块名.函数名() # 使用模块里的函数
想一想:
为什么必须加上模块名调用呢?
答:
因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名
示例:
代码语言:javascript复制import math
#这样才能正确输出结果
print(math.sqrt(2))
#这样会报错
print(sqrt(2))
3. from…import
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面方法实现:
代码语言:javascript复制from 模块名 import 函数名1,函数名2....
不仅可以引入函数,还可以引入一些全局变量、类等
注意:
通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function()
,在模块B中也有函数function()
,如果引入A中的function
在先、B中的function
在后,那么当调用function
函数的时候,是去执行模块B中的function
函数。
例如,要导入模块fib
的fibonacci
函数,使用如下语句:
from fib import fibonacci
注意:不会把整个fib
模块导入到当前的命名空间中,它只会将fib
里的fibonacci
单个函数引入
4. from … import *
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
代码语言:javascript复制from modname import *
注意:这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
5. as
别名
代码语言:javascript复制import time as tt # 导入模块时设置别名为 tt
tt.sleep(1) # 使用别名才能调用方法
from time import sleep as sp # 导入方法时设置别名
sp(1) # 使用别名才能调用方法
当一个模块很长,我们只需要其中的某个函数,但函数名比较长或者不够直观,这时可以使用
as
关键字为函数设置别名,使得函数的调用更加方便和简洁。
例如,如果我们导入了模块numpy
并使用import numpy as np
,那么我们就可以通过np.array()
来调用numpy
模块中的array
函数。
总结一下
- 使用
import
导入整个模块时,需要使用模块名.函数名()
的方式来调用模块中的函数。 - 使用
from 模块名 import 函数名
可以直接使用函数名来调用模块中的函数。 - 使用
from 模块名 import *
可以导入模块中的所有函数,但不推荐使用。 - 使用
import 模块名 as 别名
可以为模块设置别名,使用别名.函数名()
来调用模块中的函数。 - 使用
from 模块名 import 函数名 as 别名
可以为函数设置别名,使用别名来调用函数。
这些导入模块的方式可以根据实际需求来选择,灵活运用能让我们的代码更加清晰、简洁和易读。