Python模块、包与库基础

模块(Module)

Python 模块,是一个 Python 文件,也以 .py 结尾,包含了 Python 对象定义和Python语句。

模块能定义函数,类和变量,模块里也能包含可执行的代码。

导入模块

导入模块的方式
  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名
导入方式详解

下面所说的功能包含模块内的函数,变量,类等

import
语法
# 1. 导入模块
import 模块名
import 模块名, 模块名...

# 2. 调用功能
模块名.功能
  • 将导入模块名的所有内容,可通过模块名.进行访问
体验
import math  #内置数学运算库
print(math.sqrt(9))  #3.0
print(math.pi)  #3.141592653589793
from…import…
语法
from 模块名 import 功能1,功能2...
  • 无需模块名.,可以直接当做本文件中的功能,直接用功能名使用
  • 注意导入的功能与本文件内的功能重名的问题
体验
from math import sqrt,pi
print(sqrt(9))  #3.0
print(pi)  #3.141592653589793
from …import *
语法
from 模块名 import *
  • *代表all,将导入模块名的所有功能
体验
from math import *
print(sqrt(9))  #3.0
print(pi)  #3.141592653589793
as定义别名
  • 为了避免模块与本文件的功能重名,以及模块功能名过长等问题,可以利用as 给导入的模块功能取别名
语法
# 模块定义别名
import 模块名 as 别名

# 功能定义别名
from 模块名 import 功能 as 别名
体验
# 模块别名
import math as m

m.sqrt(9)  #3
m.pi  #3.141592653589793

# 功能别名
from math import factorial as fact  #阶乘
fact(3)  #6

制作模块

在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说自定义模块名必须要符合标识符命名规则。

定义模块

新建一个Python文件,命名为MyModule.py,并定义myfunction函数。

#MyModule.py
def myfunction(var):
    print("无事发生...")
测试模块

在实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息.,例如,在MyModule.py文件中添加测试代码。

#MyModule.py
def myfunction(*a,**b):
    print("无事发生...")

myfunction(1)

此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行myfunction函数的调用。

这好吗?这不好。

解决办法如下:

#MyModule.py
def myfunction(*a,**b):
    print("无事发生...")

# 只在当前文件才能调用该函数,其他导入的文件不符合该条件,则不执行函数myfunction的调用

if __name__ == '__main__':  #__main__为系统变量,代表本文件的主函数
    myfunction(1)
调用模块
import MyModule
MyModule(110,911)

#无事发生...

模块定位顺序

当导入一个模块,Python解析器对模块位置的搜索顺序是:

  1. 当前目录
  2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
  3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/

模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

  • 注意
    • 自己的文件名不要和已有模块名重复,否则导致模块功能无法使用
    • 模块调用时的时候,如果功能名字重复,调用到的是最后定义或导入的功能。后来者居上。

__all__变量

语法
#Module.py
__all__=[功能1,功能2]
  • 如果一个模块文件Module.py中有__all__变量,当使用from Module import *导入时,只能导入这个列表中的功能。

如:

  • my_module模块代码
__all__ = ['testA']


def testA():
    print('testA')


def testB():
    print('testB')
  • 导入模块的文件代码
from my_module import *
testA()  #testA
testB()  #报错

包(package)

  • 包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹内创建一个名字为__init__.py 文件。这个文件夹就被称为包。
  • 包能够清楚地架构出一大类功能

制作包

  • 创建一系列模块
  • 创建__init__.py 文件,可以置空
快速体验
  • 建立文件夹MyPackage
  • 创建__init__.py,my_module1.py,my_module2.py
  • 分别编写模块
# my_module1
def getout():
    print("请走")
# my_module2
def getin():
    print("请进")

导入包

import 包名.模块名
import 包名.模块名

包名.模块名.功能
体验
import MyPackage.my_module1
import MyPackage.my_module2
MyPackage.my_module2.getin()
MyPackage.my_module1.getout()
#请进
#请走
from 包名 import *

注意:必须在__init__.py文件中添加__all__ = [],控制允许导入的模块列表。

#__init__.py
__all__=[模块1,模块2...]
from 包名 import *
模块名.功能
体验
#__init__.py
__all__=[my_module1]
import MyPackage.my_module1
import MyPackage.my_module2
MyPackage.my_module2.getin()  #请进
MyPackage.my_module1.getout()  #未能导入,报错

库(library)

  • Python中,具有某些功能的模块和包都可以被称作库。
  • Python内置了许多有用的库,这些库不用自己额外安装,可以直接导入,如math,os,time等…
  • Python拥有强大的第三方库资源,几乎任何互联网领域都有相关的Python第三方库。第三方库需要自己额外下载安装。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子希卡利

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值