目录[-]
1、模块理念
每一个项目是由一个或多个模块组成。
每一个以.py结尾的文件(Python源代码)都是一个模块【工具包】。
模块【工具包】中定义的全局变量,类,函数都是可以提供给调用函数使用的工具。
模块可以根据功能来进行设计,使得可以更有逻辑的组织代码段,以及更好的复用。
在日常工作开发中每个人可以负责自己的模块,主程序在使用相关功能时只需要调用相关的模块即可,这样更容易实现敏捷开发。
2、导入模块方式
Import 加 模块名字直接导入
创建了一个新的命名空间,调用模块内部方法时,需要加上命名空间名字。
• 导入随机数字生产模块
import random
• 导入操作系统接口模块
import os
• 模块别名采用小写字母from module import function
#将相关模块的定义导入到当前的命名空间,使用模块内部法方法时,无须添加前缀。
from random import randint
print(randint(1, 100))
• 当有重复的方法名字时,可以使用as关键字解决
Import 加模块名字 as 名字
import random as 模块别名
模块别名.rand
import random as test
print(test.randint(1, 100))
From module import function as new\_name
from module import \*
通过这种方式可以导入module中的所有方法,并且在具体使用时也无须添加前缀。
3、模块的搜寻顺序
首先在当前目录下搜索模块,如果有则直接导入,如果没有,再在系统目录下搜索。
• 模块的内置属性 • __file __:通过该属性可以查看模块的完整路径
import random
print(random.__file__)
• __name__:该属性记录的是运行程序的起点,如果该文件即是执行文件,则该属性包含的字符串就是__main__,如果不是,则该文件即是被其他文件导入的,通过这种方式可以实现模块中的执行代码只有在测试本文件时生效,而导入时不生效。
# a.py
def show_test():
print("模块导入成功,且函数已经执行!")
def main():
print("hello,world")
if __name__ == "__main__":
main()
# b.py
import test
test.show_test()
直接执行 a.py,则会输出:hello,world
执行b.py,则会输出:模块导入成功,且函数已经执行!
而hello,world不会输出。
• dir()函数
返回一个列表,里面包含了这个模块里所有的模块,变量和函数
4、Python包的概念
Python包是一个分层次的文件目录结构,简答的来说,包就是一个文件夹。
该文件夹下必须存在一个特殊的文件__init__.py文件。
使用 import 包名,则可以一次性导入所有的模块
要在外界使用 包 中的模块,需要在 __init__.py 中指定 对外界提供的模块列表
# 从 当前目录 导入 模块列表
from . import send_message
from . import receive_message
5、压缩包
• 在包目录下新建setup.py文件
from distutils.core import setup
setup(name="hm_message", # 包名
version="1.0", # 版本
description="itheima's 发送和接收消息模块", # 描述信息
long_description="完整的发送和接收消息模块", # 完整描述信息
author="itheima", # 作者
author_email="itheima@itheima.com", # 作者邮箱
url="www.itheima.com", # 主页
py_modules=["hm_message.send_message",
"hm_message.receive_message"])
• 构建模块
python3 setup.py build
• 生产发布压缩包
python3 setup.py sdist
6、安装模块
tar -zxvf hm_message-1.0.tar.gz
sudo python3 setup.py install
7、卸载模块
cd /usr/local/lib/python3.5/dist-packages/
sudo rm -r hm_message*
8、包管理工具
Python下通用的包管理工具是pip
• 包安装
sudo pip3 install package_name
sudo pip3 uninstall package_name
• 包搜索
pip3 search package_name
• 列出已安装的包
pip3 list
• 显示已安装的包的信息
pip3 show package_name