目录[-]


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