Python进阶(五)模块、包详解

文章目录

    • 导入时指定别名
    • 局部导入
      • 注意
    • 模块搜索顺序
    • 发布模块

  模块是 Python程序架构的一个核心概念。每一个以扩展名 py结尾的 Python源代码文件都是一个模块。模块就好比是工具包,要想使用这个工具包中的工具,就需要先导入这个模块。

import 模块1

导入时指定别名

  如果模块名太长,可以使用as指定模块的名称

import 模块1 as 模块别名

局部导入

  如果希望从某一个模块中导入一部分工具,可采用以下方式:

from 模块名1 import 工具名

  导入之后可以直接使用模块提供的工具(全局变量、函数、类)。如果两个模块存在同名的函数,那么导入模块的会覆盖掉先导入的函数。

注意

  1. 这种导入方式与import导入有很大区别,import导入会一次性把模块中所有工具全部导入,并且通过模块名/别名访问。

  2. 如果两个模块存在同名的函数,那么后导入的模块的函数会覆盖掉先导入的函数

模块搜索顺序

  Python的解释器在导入模块时,会:

  1. 搜索当前目录指定模块名的文件,如果有就直接导入
  2. 如果没有,再搜索系统目录。

  因此在开发时,给文件起名,不要和系统的模块文件重名。使用模块.__file__可以查看模块文件目录。

  在实际开发中,每一个模块都是独立开发的,大多都有专人负责,开发人员通常会在模块下方增加一些测试代码。仅在模块内使用,而被导入到其他文件中不需要执行,使用__name__就可以做到。

  包是一个包含多个模块的特殊目录,目录下有一个特殊的文件__init__.py,包名的命名方式和变量名一致,小写字母+_。好处在于可以一次性导入包中所有的模块。

  这里特别需要注意的是,如果需要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表。

# 从 当前目录 导入 模块列表
from . import send_message

发布模块

  如果希望自己开发的模块分享给其他人,可以按照以下步骤操作。要把模块制作成压缩包需要三步:

  1. 创建setup.py文件
from distutils.core import setup

# 多值的字典参数,setup是一个函数
setup(name="Hello",  # 包名
      version="1.0",  # 版本
      description="a simple example",  # 描述信息
      long_description="简单的模块发布例子",  # 完整描述信息
      author="onefine",  # 作者
      author_email="[email protected]",  # 作者邮箱
      url="www.onefine.top",  # 主页
      py_modules=["hello.request",
                  "hello.response"])  # 记录包中包中包含的所有模块
  1. 构建模块
$ python3 setup.py build
  1. 生成发布压缩包
$ python3 setup.py sdist
  • 安装模块
$ tar -zxvf XX.tar.gz
$ sudo python3 setup.py install
  • 卸载模块

  直接从安装目录下,把安装模块的目录删除就可以

$ cd /usr/local/11b/ python3.5/dist-packages/
$ sudo rm -r 包*

你可能感兴趣的:(Py进阶)