python中模块、包和库

模块:是一个python文件(.py),拥有多个功能相近的函数或类,通常把功能相近的函数放在一个模块中。需要的时候就可以导入这些模块。例如,创建一个A.py文件一个main.py文件放入同一个文件夹。

python中库和模块 python 库 模块_python中库和模块


A.py中定义两个函数,一个加法,一个减法。

:# 定义一个函数,实现加法的运算
def add(a,b):
    return a+b
# 定义一个函数,实现减法的运算
def sub(a,b):
    return a-b

我们从main.py中调用这两个函数:

import A 

if  __name__=='__main__':
    a=A.add(3,5)    
    print(a)    
    b=A.sub(3,5)    
    print(b)

输出结果

python中库和模块 python 库 模块_python_02

包:为了避免模块名冲突,Python引入按目录来组织模块,将功能相近的模块(python文件),放在同一个文件夹下。(包也就是一个个文件夹),我们创建一个文件夹demo,一个子文件夹operate,其中A.py文件在demo/operate文件夹内,main.py在demo文件夹内

python中库和模块 python 库 模块_python中库和模块_03


我们从main.py中调用A.py中的函数使用import

import operate.A 
if  __name__=='__main__':    
    a=operate.A.add(3,5)    
    print(a)    
    b=operate.A.sub(3,5)    
    print(b)

运行结果:

python中库和模块 python 库 模块_Python_04


注意:这里的import不再是import A,而是import A所在文件夹下的A,因为A.py和main.py不再是同一个文件夹。也就是同一个包内

当包很多的时候,我们调用包内模块中的函数的时候就很麻烦,如上面,我们调用A中的add函数,必须写成operate.A.add(),这时我们就可以使用as关键字,我们只要在import operate.A后面加一个as 别名,这个一般自己取,后面调用函数时,直接别名.函数()就行了

import operate.A as op
if  __name__=='__main__':    
    a=op.add(3,5)    
    print(a)    
    b=op.sub(3,5)    
    print(b)

除了import导入库,我们还可以用from…import…,前面的我们使用import直接导入整个模块,模块中的函数我们都可以使用,现在我们使用from…import…则是导入具体的函数,比如我们想使用A.py中的add()函数,则可以写成from operate.A import add,使用from…import…时,我们调用库中的函数可以不写模块,包作为前缀,直接写函数名

from operate.A import add
if  __name__=='__main__':
    a=add(3,5)    
    print(a)

注意我们不管是用import还是from…import…导入的都不可能导入文件夹,必须是模块或者是函数,如果上述写成import operate则会报错

当包有很多时,例如我们在demo/operate/functions文件夹内创建A.py,在demo/main/文件夹创建main.py

python中库和模块 python 库 模块_python_05


我们在main中调用A中的函数,就得写成import operate.functions.A as op或者from operate.functions.A import add

# import operate.functions.A as op
from operate.functions.A import add
if  __name__=='__main__':
    a=add(3,5)
    print(a)

这时候import的内容就会非常乱而多,我们可以使用__init__函数,我们在operate文件夹下创建一个__init__.py,里面写入

python中库和模块 python 库 模块_Python_06


这时候operate就会被当成一个包来处理,我们在main调用A中的函数时,就可以直接import包名

python中库和模块 python 库 模块_python中库和模块_07


调用函数时,就可以写成包名.模块.函数()

库:具有相关功能的模块或包的集合,Python有很强大的第三方库,比如numpy库,我们也可以导入库