python模块与包

模块

模块是对应于python源代码文件,以.py为扩展名的python文件,模块名(作为一个字符串)可以通过全局变量 name 的值获得。python中的模块包括模块、第三方模块和用户自定义模块。通过导入模块,可以使用该模块中的变量、函数和类等。使用模块,可以将计算任务分解为大小合理的子任务,并实现代码的重用功能。

模块的导入与创建

导入
  1. import 模块1,2···
    使用import可一次导入多个模块,每个模块名之间使用逗号分隔。在命令行中导入某个模块,用户即可调用指定模块中的任意方法,调用方法:模块.方法()(每次都要打模块名,好累的)
  2. from 模块 import 方法/类/对象
    使用import语句导入模块后,每次调用模块中的内容时都需要添加前缀模块名,若某些内容在导入模块的文件中使用的频率较高,或者模块名较长,使用这种方法就比较繁琐。为解决此问题python提供了"from import"语句,该语句可导入模块中的部分内容,调用方法:from 模块 import 方法/类/对象(此语句导入无需添加模块名前缀,可以直接使用,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入 be careful!!!)
  3. from 模块名 import *
    通配符星号指代模块中的全部方法,但若导入文件中存在与导入内容重名的方法、变量或类时,程序执行将会出错。
创建

Python模块对应于包含Python代码的源文件(其扩展 名为.py),在文件中可以定义变量、函数和类。在模块中,除了可以定义变量、函数和类之外,还可 以包含一般的语句,称之为主块(全局语句)。当运行该模块,或导入该模块时,主块语句将依次执行。
Python文件中的每个文件都可以做为一个模块存在,文件名即模块名。

模块的搜索路径

存储于sys模块中的sys.path属性中,用户可先在解释器中导入sys模块,再查看sys.path的值。其本质是列表,因此用户可以通过列表的内置方法append动态地向sys.path中添加模块所在路径。(没找到会报错)

导入顺序

解释器按下列目录搜索路径和文件搜索顺序查找并导入文件:
当前目录(启动交互式python的目录)-> 操作系统环境变量pythonpath指定目录 -> python标准库目录

模块的属性

  1. __all__属性
    __all__变量控制模块里哪些功能可以使用星号导入
## 模块名.py
__all__ = ['需要使用的功能的函数名'’] 逗号隔开
from 模块名 import *
#即可以用上面.py文件里方括号的函数
  1. __ name 属性
    每个模块都有一个名称,通过特殊变量
    name__可以获取模块的名称。特别地,当一个模块被用户单独运行时,其__ name__的值为 '__ main__ '。故可以把模块源代码文件的测试代码写在相应的测 试判断中,以保证只有单独运行时,才会运行测试代码。
    导入模块时,其取值为模块名称
__name__ = 模块名

另外
模块在被导入时会被执行一次,这个过程也叫加载。一个模块就算被多次导入程序,也只会被加载一次。
.pyc文件是经过编译后的字节码,这样下次导入时,如果模块源代码.py文件没有修改(通过比较两者的时间戳),则直接导入.pyc文件,从而提高程序效率。按字节编译的.pyc文件是在导入模块时,python解释器自动完成,无需程序员手动编译。

是Python引入的分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。 引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。
每一个Python的包目录下面都会有名为__ init__.py的特殊文件, 该文件可以为空文件,但是必须存在包和模块的区别,它表明这个目录不是普通的目录结构,而是一个包,里面包含模块。
在这里插入图片描述通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

模块的打包发布

用户可以将自己编写的模块打包为可安装的压缩包,分享给其他开发人员。将待发布的包放在与setup.py文件同级的目录中,编辑setup.py脚本文件,setup.py文件中包含的内容如下:

from distutils.core import setup
setup(
	name = "包名"
	version = "版本号"
	description = "包的描述信息,help(包名)会出来的内容"
	author = "包的作者"
	py_modules = [包中包含的模块]
)

setup为一个函数,包含五个参数,依次为:包名、版本号、描述信息、作者及包中含有的模块,实际上该函数不只有这些参数,这些参数也不是必须的,用户可以有选择的进行设置。
在当前路径下打开命令行窗口,使用bulid命令构建模块

python setup.py bulid

经此操作后,当前目录中会创建一个名为bulid的文件夹,其中包含一个名为lib的目录,该目录存储了待发布模块的备份。用户可以通过sdist命令建立存放文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值